gcc C编译器是用C本身编写的吗?

问题描述

| gcc C编译器是用C本身编写的吗?还是用汇编语言编写?如果编译器是用C编写的,那么用于编译编译器代码的编译器是什么?     

解决方法

GCC的特定历史记录在GCC Wiki中提供。更为笼统的一点是,编译器通常最初是与其他一些编译器一起编译的,直到它们强大到可以自行编译为止。或者,可以编写一个基本的编译器来处理汇编程序中部分功能,然后从那里进行构建。但是,这几乎不再需要了。有大量可用的各种语言的编译器。甚至在斯蒂芬·约翰逊(Stephen Johnson)编写pcc(最早的C编译器之一)时,也存在可用的B编译器以及许多其他语言。 gcc最初有几个编译器可供选择,而RMS表示至少在最初的开发过程中他使用了Pastel编译器。 记住,没有要求用C编写C编译器。如果愿意,可以用Perl编写。不需要将用于给定平台的编译器最初写在该平台上(嵌入式系统几乎总是在其他系统上编译)。因此,有很多方法可以使您自举。 这个问题有一些有趣的细微之处,它们与引导编译器的第一个实例有关。如果您非常聪明,则可以利用该引导程序执行令人难以置信的,辉煌的和令人恐惧的事情。     ,最初它是用某种汇编语言编写的,然后就开始狗食了。     ,尽管这显然只是一个非常粗糙的指标,但我发现在
gcc-5.1.0-src/gcc/
目录中的此快速列表很有趣。这个目录 包含GCC本身的主要来源(运行时库除外)。 这是按扩展名分组的排名第一的文件计数(超过100),这些扩展名以C和C ++文件为主。
    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 
请注意,如今的“ 2”指的是GNU编译器集合,而不仅仅是GNU C编译器。   6.3 gcc子目录      gcc目录包含许多文件,这些文件是C源代码的一部分   GCC,其他文件用作配置和构建的一部分   流程以及包括文档和测试套件的子目录。 参考:https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html