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