是否可以在不使用asm代码的情况下制作内核映像?

时间:2017-09-27 16:59:06

标签: c assembly operating-system kernel bios

我在网上看到了很多教程,其中assembly languageC一起使用以构建新的内核映像。但我不明白为什么要求汇编,而C Compiler可以从c代码生成asm

使用assembly代码编程内核的原因是什么?如何在C下开发内核而无需在asm中编写代码?

1 个答案:

答案 0 :(得分:2)

你没有定义用C语言制作内核对你意味着什么。

您可以在C代码中使用asm语句或声明embed assembler(但这是“作弊”而且不再是可移植C)。

但你不能在纯可移植C中编写整个multi-tasking内核,因为有些东西(特别是那些操纵任务或continuationscall stacksinterrupts - 即{ {3}} - 或scheduler)无法用C编码。请注意,即使virtual memory也无法在纯C中实现。

请参阅longjmp(3) wiki并阅读OSDEV

Operating Systems : Three Easy Pieces操作系统中研究现有调度程序,中断处理程序,VM子系统等的源代码(并问自己如何在C中重新编码汇编代码他们正在使用)。其中需要汇编程序(不仅仅是“性能”或“可读性”原因)。

相关问题