如何在没有C本机编译器的情况下创建C编译器

这是一个简单的问题。 如果编译C编译器需要一个C编译器……也许直接用汇编代码? 也许内核提供了将C转换为汇编程序并创建升级基础结构的基本工具? 这也是一个愚蠢的问题,但我真的很感兴趣如何设计一个操作系统(不是我)从0开始与CPU和内存交互。

引导

如果您想要查找它,可以使用“通过引导程序提升自己”这一短语。 Bootstrapping是一个简单的过程,但它需要做很多工作。

  1. 用另一种语言编写C编译器。

  2. 在C中编写C编译器

  3. 使用步骤#1中的编译器编译步骤#2中的编译器。

其他一些编译器必须是自举的,而不仅仅是C的编译器。例如,必须使用GHC来编译自己。

请注意,只有满足以下两个条件时才需要自举:

  1. 您正在发明一种新语言,因此没有现有的编译器。

  2. 您希望以您正在编译的语言编写编译器。

这与操作系统无关。 如果您正在设计操作系统,那么您已经有了足够的工作。 如果您的新操作系统还没有C编译器,则可以从其他操作系统交叉编译编译器。 这工作要少得多 – 可能是几个小时或几天,而不是几个月或几年。

听起来这是tcchttp://bellard.org/tcc/ ),Tiny C编译器的任务。

它是我所知道的最小的C编译器,它可以在你移植它之后编译一个更大的编译器,并且有很多关于如何将它移植到自定义系统的指南。