我现在真的很困惑......
诸如 vmlinuz 二进制文件、MBR 和 BOOTMGR 镜像之类的可启动文件都是用纯二进制/机器代码编写的。但它们是从 C 和汇编语言编译而来的 - 即 Linux 内核源代码不仅仅由 1 和 0 组成,它由 C 源代码组成。我如何获取汇编和 C 程序并将它们编译为通用 x86(在我的例子中是 x86-32)微处理器范围的机器代码,以便我可以从这些文件启动。
最佳答案
对于此类事情有一个很棒的资源:OSDev .
特别查看 Bare bones页面:它引导您完成创建、构建和运行用汇编语言和 C 语言编写的极简“内核”的过程。
另请参阅Baby steps有关如何构建引导扇区的页面。
关于将 C 和汇编编译为纯机器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6716489/