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



我有一个用汇编编写的简单(极其简单)实模式内核,我正在尝试尽可能多地移植到 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,您将不得不调查更多。

除非你真的被迫使用真实模式,否则你可能不应该在上面浪费时间。

相关内容

  • 没有找到相关文章

最新更新