我想使用Visual C++为x86机器构建一个嵌入式内核.我有一些C和汇编代码文件要编译,我想以一种与GRUB等多重引导加载程序兼容的方式将它们连接在一起.
OSDev 在Visual Studio上有一个wiki条目,可能提供一些见解,尤其是关于PE内核主题的Kaushik Srenevasan 博客 条目的链接,这些内容旨在由基于多引导的引导加载程序(如GRUB)加载.
你应该知道一些大而广泛的事情:
在多引导标头中,您需要使用AOUT kludge.
您需要为链接器指定/ BASE:0x100000参数,因此最终的二进制代码基于引导加载程序将其放置的位置.
你的内核的入口点(通常称为' kmain
')需要有__declspec(noreturn)
它,你需要做一个__asm { hlt }
而不是返回.