在C本身编写的GCC C编译器?

在C本身编写的GCC C编译器? 还是写在大会? 如果编译器是用C编写的,那么编译器用来编译编译器代码是什么?

gcc的具体历史logging在GCC Wiki中给出。 更一般的观点是,编译器通常最初是用其他编译器编译的,直到它们足够强大才能编译它们自己。 或者,可以编写一个基本的编译器,可以在汇编程序中处理您的一部分function,然后从中编译。 但是,再次,这几乎不再需要。 有很多可用的编译器,以各种语言。 即使当Stephen Johnson写pcc(C语言编译器之一)时,也有编译器可以使用B以及许多其他的语言。 海湾合作委员会有几个编译器select从原来build立它,RMS说,他至less在他最初的发展期间使用粉彩编译器。

请记住,C编译器不需要用C编写。如果你愿意的话,可以用Perl编写。 没有要求给定平台的编译器最初写在该平台上(embedded式系统几乎总是在其他系统上编译)。 所以有很多方法让自己引导。

这个问题有一些与引导编译器的第一个实例有关的微妙之处。 如果你很聪明,你可以利用这个引导来做一些令人难以置信的,辉煌的,可怕的事情 。

最初它是用一些汇编语言写的,然后开始自己去吃狗食。

虽然这显然只是一个非常粗略的指标,但我发现这个快速列表gcc-5.1.0-src/gcc/目录上很有趣。 该目录包含GCC本身的主要来源(运行时库除外)。

以下是由C和C ++文件支配的扩展分组的最高文件数 (超过100)。

  112 .opt 118 .def 140 .cc 185 .x 250 .exp 353 .md 366 .mm 414 .f 430 .f03 521 .m 625 .a 1082 .go 1371 .h 1602 .ads 1655 .adb 1828 .ada 3860 .f90 11231 .C // C++ 23811 .c // C 

请注意,现在GCC指的是GNU编译器集合,而不仅仅是GNU C编译器。

6.3 gcc子目录

gcc目录包含许多文件,这些文件是GCC的C源代码的一部分,用作configuration和构build过程一部分的其他文件,以及包括文档和testing套件的子目录。

参考: https //gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html