请问如何使用C语言创建操作系统。请我只想了解基本知识。可以仅使用c来完成,还是需要将内联汇编与c一起使用?如果可能的话,我只想从引导加载程序开始。
答案 0 :(得分:2)
在典型内核的某些部分中,有必要做一些C不支持的事情,包括:
CPUID
,LGDT
,LIDT
指令)要使用纯C语言编写OS,您需要避免所有这些事情(可能会受到严重限制-例如,单任务处理,单个地址空间,无保护,无IRQ等),或者通过向C添加“非标准实现定义的扩展”。
请注意,您所需的汇编数量很少-例如一个由500万行C组成的内核可能只需要100行内联汇编,这相当于“ 0.00%的代码(略有舍入误差)”。
对于引导代码/引导加载程序;这取决于启动环境。例如,如果您从UEFI固件启动,那么没问题(因为它的API是为高级语言设计的),但是,如果您是从BIOS固件启动的,那么您就不能单独使用C(由于“不支持”的调用约定)。