¿El compilador gcc C está escrito en C? ¿O está escrito en ensamblado? Si el compilador está escrito en C, ¿cuál es el compilador que se usa para compilar el código del compilador?
c
gcc
compiler-construction
euforia83
fuente
fuente
Respuestas:
La historia específica de gcc se proporciona en el Wiki de GCC . El punto más general es que los compiladores generalmente se compilan originalmente con algún otro compilador hasta que son lo suficientemente potentes para compilarse a sí mismos. Alternativamente, es posible escribir un compilador básico que pueda manejar un subconjunto de sus características en ensamblador y construir desde allí. Pero nuevamente, esto ya casi nunca es necesario. 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 lenguajes. gcc tenía varios compiladores para elegir para construirlo originalmente, y RMS dice que estaba usando el compilador Pastel al menos durante su desarrollo inicial.
Recuerde, no es necesario que un compilador de C esté escrito en C. Puede escribirlo en Perl si lo desea. No es necesario que un compilador para una plataforma determinada esté escrito originalmente en esa plataforma (los sistemas integrados casi siempre se compilan en algún otro sistema). Así que hay muchas formas de iniciarse.
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 .
fuente
Originalmente estaba escrito en lenguaje ensamblador y luego comenzó a ser comida para perros.
fuente
Si bien esto es obviamente solo un indicador muy aproximado, encontré interesante esta lista rápida en el
gcc-5.1.0-src/gcc/
directorio. Este directorio contiene las fuentes principales de GCC en sí (excepto las bibliotecas en tiempo de ejecución).Aquí están los principales recuentos de archivos (más de 100) agrupados por extensión dominados por 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 se
GCC
refiere a la colección de compiladores GNU, no solo al compilador GNU C.Referencia: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html
fuente