我读过几个嵌入式项目,在所有这些项目中,引导加载程序都是用汇编语言而不是 C 语言编写的。这有什么原因吗?
最佳答案
通常,至少入口点 stub ,以及可能到真正内核的转换,需要用汇编语言编写,因为它们涉及无法用 C 语言表示的控制传输/调用约定约束。例如,如果引导加载程序在堆栈可用之前,需要初始化堆栈指针以指向 ram,如果没有尴尬的编译器扩展,这无法在 C 中表示。然而,通常可以将汇编中写入的数量保持得非常小,并且与这些类型的边界隔离。如果引导加载程序的其余部分也是用 asm 编写的,这通常表明作者没有很好地评估成本(维护、错误等)与 yield (可能更小的尺寸)。
关于c - 为什么引导加载程序是在汇编中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589378/