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

is it possible to make a kernel image without using asm code?

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

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

您没有定义用 C 编写内核对您意味着什么。

您可以在 C 代码中对 embed assembler 使用 asm 语句或声明(但那是 "cheating" 并且不再是可移植的 C)。

但是你不能写一个完整的multi-tasking kernel in pure portable C, because some things (notably those manipulating tasks or continuations or call stacks or interrupts - i.e. the scheduler - or virtual memory) cannot be coded in C. Notice that even longjmp(3)不能用纯C实现

OSDEV wiki and read Operating Systems : Three Easy Pieces

还研究 现有调度程序、中断处理程序、VM 子系统……在 free software 操作系统中的源代码(并问问自己如何重新编码在 C 中,他们正在使用的汇编代码)。它们需要汇编程序(不仅或主要不是出于 "performance" 或 "readability" 原因)。