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