是否可能完全使用C语言编写操作系统?
所谓“完全”,包括引导加载程序在内的所有内容,但不包括BIOS / UEFI。
是否可能完全使用C语言编写操作系统?
所谓“完全”,包括引导加载程序在内的所有内容,但不包括BIOS / UEFI。
asm(".code16gcc")
,但我不建议这样做,因为GCC无法直接输出16位代码,结果汇编程序可能会超过512字节。-m16
选项,可启用16位代码生成,因此可以进一步减少汇编的使用,例如引导程序/引导加载程序(尽管某些位仍需要汇编语言)。operating_system();
是实现操作系统的程序的源代码。jmp_buff
和一个char[]
的联合体,并将程序入口点单独写入其中的字符,然后执行longjmp
以跳转到该地址,而不使用任何堆栈[注意,memcpy甚至结构分配可能会是子例程调用,因此不会起到任何好处]。 - supercatjmp_buff
更清晰(并且可能更具可移植性),但是像jmp_buff
这样的技术可以使在许多实现中,无需编译除C代码以外的任何内容即可设置系统。 - supercat