是否可以在gcc中为ring0生成本机x86代码?

时间:2013-09-03 21:38:37

标签: gcc assembly x86 code-generation native

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

问题不是很好。当然,并非所有从头开始初始化现代CPU所需的指令都可以由gcc单独发出,你需要使用一些程序集。但这是一种学术问题,因为现代CPU实际上并没有记录所有这些内容,而是希望您的硬件制造商能够运送固件来实现它。在固件初始化之后,现代PC将您置于旧式16位8086环境(“传统”BIOS)或相当干净的32位或64位(取决于您的特定硬件平台)环境中,称为“EFI Boot Services”。 / p>

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