0

我想知道,有没有办法用 gcc 生成一些本机 x86 代码(可以在没有任何操作系统的情况下启动)?

4

2 回答 2

3

是的,Linux 内核使用 GCC 编译并在 x86 上的 ring 0 中运行。

于 2013-09-03T21:43:05.910 回答
1

这个问题的格式不正确。当然,并非所有从头开始初始化现代 CPU 所需的指令都可以由 gcc 单独发出,您需要为此使用一些程序集。但这有点学术性,因为现代 CPU 实际上并没有记录所有这些东西,而是希望您的硬件制造商提供固件来做到这一点。固件初始化后,现代 PC 将您留在旧式 16 位 8086 环境(“传统”BIOS)或相当干净的 32 位或 64 位(取决于您的特定硬件平台)环境中,称为“EFI 引导服务”。

EFI模式下的操作都是使用C函数指针完成的,你确实可以使用gcc为这个环境构建。请参阅 gummiboot 引导加载程序以获取使用 EFI 的绝佳示例。

于 2013-09-03T21:43:51.997 回答