Pregunta ¿El compilador de gcc C está escrito en C?


¿El compilador de gcc C está escrito en C? ¿O está escrito en Asamblea? Si el compilador está escrito en C, ¿qué compilador usó para compilar el código del compilador?


74
2018-04-14 01:03


origen


Respuestas:


La historia específica de gcc se da en el GCC Wiki. El punto más general es que los compiladores generalmente se compilan originalmente con algún otro compilador hasta que son lo suficientemente poderosos como para compilarse ellos mismos. Alternativamente, es posible escribir un compilador básico que pueda manejar un subconjunto de sus características en ensamblador, y acumular desde allí. Pero, nuevamente, esto casi nunca se necesita más. Hay muchos compiladores disponibles, en una variedad de idiomas. Incluso cuando Stephen Johnson estaba escribiendo pcc (uno de los primeros compiladores de C), había compiladores para B disponibles, junto con muchos otros idiomas. gcc tenía varios compiladores para elegir originalmente y RMS dice que estaba usando el compilador Pastel al menos durante su desarrollo inicial.

Recuerde, no hay ningún requisito de que un compilador de C se escriba en C. Podría escribirlo en Perl si así lo desea. No hay ningún requisito de que un compilador para una plataforma determinada se escriba originalmente en esa plataforma (los sistemas integrados casi siempre se compilan en algún otro sistema). Entonces hay muchas maneras de obtener un bootstrap.

Esta pregunta tiene algunas sutilezas interesantes relacionadas con la primera instancia de arranque del compilador. Si fueras muy inteligente, podrías hacer uso de ese bootstrap para hacer algo increíble, brillante y aterrador.


86
2018-04-14 01:24



Originalmente estaba escrito en un lenguaje ensamblador y comenzó a alimentarse por sí mismo.


50
2018-04-14 01:05



Si bien esto es obviamente solo un indicador muy aproximado, encontré esto rápido listado sobre el gcc-5.1.0-src/gcc/ directorio interesante. Este directorio contiene las principales fuentes de GCC (excepto las bibliotecas de tiempo de ejecución).

Aquí están los conteos de archivos principales (más de 100) agrupados por extensión dominado por los archivos C y 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 

Tenga en cuenta que hoy en día GCC se refiere a la Colección de compiladores de GNU, no solo al Compilador C de GNU.

6.3 El Subdirectorio gcc

El directorio gcc contiene muchos archivos que son parte de las fuentes C   de GCC, otros archivos utilizados como parte de la configuración y construcción   proceso y subdirectorios, incluida la documentación y un conjunto de pruebas.

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


3
2017-10-30 17:10