这是一个简单的问题。如果编译 C 编译器需要一个 C 编译器......也许直接用汇编代码?也许内核提供了将 C 转换为汇编程序并创建升级基础设施的基本工具?这也是一个愚蠢的问题,但我真的很感兴趣如何从 0 设计一个操作系统(不是我)来与 CPU 和内存交互。
问问题
1200 次
2 回答
9
自举
如果您想查找它,这来自短语“通过您的引导来提升自己”。自举是一个简单的过程,但需要大量工作。
用另一种语言编写 C 编译器。
用 C 编写一个 C 编译器。
使用步骤#1 中的编译器来编译步骤#2 中的编译器。
其他一些编译器必须引导,而不仅仅是 C 的编译器。例如,必须使用GHC来编译自身。
请注意,仅当以下两个都为真时,才需要引导:
您正在发明一种新语言,因此没有现有的编译器。
您想用您正在编译的语言编写编译器。
这与操作系统无关。如果您正在设计一个操作系统,那么您已经有足够的工作要做了。如果您的新操作系统还没有 C 编译器,您可以从不同的操作系统交叉编译编译器。工作量要少得多——可能是几个小时或几天,而不是几个月或几年。
于 2013-02-05T01:42:08.467 回答
3
听起来这是Tiny C 编译器tcc
( http://bellard.org/tcc/ ) 的任务。
它是我所知道的最小的 C 编译器,一旦你移植它就可以编译一个更大的编译器,并且有许多关于如何将它移植到自定义系统的指南。
于 2013-02-05T01:40:41.427 回答