这是一个简单的问题。如果要编译C编译器,是否需要C编译器?也许可以直接使用汇编代码?或者内核提供了将C转换为汇编语言并创建升级基础设施的基本工具?这也是一个愚蠢的问题,但我真的很感兴趣如何从0设计一个操作系统(不是我),以与CPU和内存交互。
这是一个简单的问题。如果要编译C编译器,是否需要C编译器?也许可以直接使用汇编代码?或者内核提供了将C转换为汇编语言并创建升级基础设施的基本工具?这也是一个愚蠢的问题,但我真的很感兴趣如何从0设计一个操作系统(不是我),以与CPU和内存交互。
这个词源于短语“用自己的靴带拉自己”,如果你想查一下的话。引导程序是一个简单的过程,但需要进行大量的工作。
用另一种语言编写C编译器。
用C语言编写C编译器。
使用第1步中的编译器来编译第2步中的编译器。
某些其他编译器也需要进行引导程序,不仅仅是C编译器。例如,GHC必须使用自身来编译。
请注意,只有在以下两种情况同时满足时才需要进行引导程序:
您正在发明一种新的语言,因此不存在现有的编译器。
您想要用正在编译的语言编写编译器。
这与操作系统无关。如果您正在设计操作系统,那么您已经有了足够的工作量。如果您的新操作系统尚未拥有C编译器,您可以从另一个操作系统交叉编译编译器。这样做要少得多——可能只需要几个小时或几天,而不是几个月或几年。