我想使用 Visual C++ 为 x86 机器构建嵌入式内核。我有一些 C 和汇编代码文件要编译,我想以与 GRUB 等 Multiboot 引导加载程序兼容的方式将它们链接在一起。
Frank Miller
问问题
3776 次
1 回答
6
OSDev在 Visual Studio 上有一个 wiki 条目,它可能会提供一些见解,尤其是指向 Kaushik Srenevasan 的关于 PE 内核主题的博客 条目的链接,该主题旨在由基于多重引导的引导加载程序(如 GRUB)加载。
您应该知道的一些大而广泛的事情:
- 在 multiboot 标头中,您需要使用 AOUT kludge。
- 您需要为链接器指定 /BASE:0x100000 参数,因此最终的二进制代码基于引导加载程序将其放置的位置。
- 您的内核的入口点(通常称为“
kmain
”)需要__declspec(noreturn)
在其上,并且您需要执行 an__asm { hlt }
而不是返回。
于 2009-03-21T05:43:26.570 回答