¿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?
¿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?
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 .
Originalmente estaba escrito en lenguaje ensamblador y luego comenzó a ser comida para perros.
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.
6.3 El subdirectorio gcc
El directorio gcc contiene muchos archivos que forman parte de las fuentes C de GCC, otros archivos utilizados como parte del proceso de configuración y compilación, y subdirectorios que incluyen documentación y un conjunto de pruebas.
Referencia: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html