7

我想使用 Visual C++ 为 x86 机器构建嵌入式内核。我有一些 C 和汇编代码文件要编译,我想以与 GRUB 等 Multiboot 引导加载程序兼容的方式将它们链接在一起。

4

1 回答 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 回答