繁体   English   中英

使用OpenWatcom编译并链接到C语言中的二进制简单实模式操作系统

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM