[英]Compiling and linking to binary simple real mode OS in C with OpenWatcom
我有一个用汇编语言编写的简单(极端简单)实模式内核,我正尝试尽可能多地移植到C。 为了做到这一点,我使用OpenWatcom编译器进行16位二进制代码。
在我的文件“ os.c”中,如果我将此行写下来,它将起作用:
char msg[50];
但是如果我这样做:
char msg[50] = "hello";
它只是不起作用。 每次我写一个字符串,它都会被打断。 我到处搜寻,尝试了很多废话,什么也没做。
有人知道这可能是什么吗?
我发布的链接不能超过2个,因此所需的所有4个链接都位于pastebin中。 提前致谢。
示例: http : //pastebin.com/xz96N91A
我已经安装了openwatcom,因此可以看到它的作用。 显然这是一个很大的混乱,数据部分似乎应用在代码中间。
我建议您改为创建一个COM
格式文件。 至少看来可行。 我使用命令wcl -s -zls -0 -q -ms -bcl=com os.c
来创建os.com
,以代替os.bin
。 我还已将加载程序中的远跳转更新为jmp far 0x0040:0x0100
以解决com入口点的问题。 可能还需要设置一些段寄存器,但是对于此测试,它不需要这样做。
我相信COM
文件的限制为64k,不知道watcom是否强制执行该操作。 如果是这样,并且您需要超过64k,则必须进行更多调查。
除非您真的被迫使用实模式,否则您可能不应该在其上浪费时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.