¿El compilador gcc C está escrito en C?

5 minutos de lectura

¿El compilador gcc C está escrito en C mismo? ¿O está escrito en Asamblea? Si el compilador está escrito en C, ¿cuál es el compilador que se usa para compilar el código del compilador?

  • Sí lo es (en su mayoría). Por supuesto, se necesita un compilador de C para compilar C, por lo que, como ocurre con la mayoría de los compiladores, hay una serie de fases de “arranque”. La idea general se cubre en Instalación de GCC: Construcción y Instalación de GCC – LFS.

    usuario166390

    14 de abril de 2011 a las 1:05


  • Las estaciones de trabajo de diferentes marcas en la década de 1980 y principios de la de 1990 tenían sus propios entornos similares a Unix con compilador C, herramientas, etc., que eran un poco diferentes entre sí. Con la fuente de GCC, puede hacer una compilación inicial de gcc en una de estas plataformas y luego compilar gcc consigo mismo varias veces para verificar más o menos un punto fijo.

    – Pablo

    14 de abril de 2011 a las 2:24

¿El compilador gcc C esta escrito en C
rober napier

La historia específica de gcc se da en el Wiki del CCG. El punto más general es que los compiladores generalmente se compilan originalmente con algún otro compilador hasta que son lo suficientemente potentes como para compilarse a sí mismos. Alternativamente, es posible escribir un compilador básico que pueda manejar un subconjunto de sus funciones en ensamblador y construir desde allí. Pero, de nuevo, esto ya casi nunca se necesita. Hay muchos compiladores disponibles, en una variedad de lenguajes. 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 hay ningún requisito de que un compilador de C esté escrito en C. Puede escribirlo en Perl si lo desea. No existe 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 ponerse en marcha.

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 arranque para hacer algo increíble, brillante y aterrador.

  • Woah, ese segundo artículo al que te vinculaste es increíblemente inteligente.

    – Ponkadoodle

    18 de julio de 2011 a las 4:22

  • Gracias por el gran enlace de arranque. Supuse que los compiladores siempre se escribieron en lenguajes más simples hasta el código de máquina para algo así como esta razón. (Por ejemplo, ¿qué sucede si se da cuenta de que el binario de su compilador contiene un error? Esto proporciona un ejemplo mucho más sólido, por supuesto). Entonces, ¿cuáles son las ventajas de escribir el compilador en su propio idioma? ¿Las personas extremadamente paranoicas se preocupan por esto y construyen sus compiladores sin un arranque “auto”?

    – RoG

    9 de marzo de 2017 a las 14:18

  • Algunos grupos lingüísticos consideran una marca de honor poder compilar ellos mismos. Go recientemente hizo un gran esfuerzo en esta dirección. Swift, por otro lado, notablemente no tiene planes actuales para reescribir su compilador en Swift. Tenga en cuenta, sin embargo, que GCC siempre se escribió en C. Solo se compiló con otros compiladores. Pero si todos los compiladores de C estuvieran escritos en BCPL, eso no solucionaría nada con respecto a la paranoia. Simplemente hace retroceder el problema un paso. (Obtendría los mismos beneficios de paranoia simplemente compilando GCC con sonido metálico).

    –Rob Napier

    9 de marzo de 2017 a las 14:35

  • Tenga en cuenta que gcc tiene una política de que la versión principal de gcc X siempre se puede compilar con la versión principal de gcc X-1, por lo que cualquier característica nueva agregada al compilador en X solo se puede usar en la fuente de gcc desde X+1. por ejemplo, debería poder compilar cualquier gcc versión 9, sin importar cuál sea el número de versión menor, con cualquier gcc 8, nuevamente sin importar cuál sea la versión menor.

    – Baruc

    5 de noviembre de 2020 a las 8:53

Originalmente estaba escrito en algún lenguaje ensamblador y luego comenzó a convertirse en alimento para perros.

  • No he visto ninguna referencia a RMS usando ensamblador para el arranque original. ¿Cuál es tu fuente para eso? Tenía varios otros compiladores con los que arrancar, por lo que parece mucho trabajo.

    –Rob Napier

    14 de abril de 2011 a las 1:27

  • Pensé que el término era bootstrap.

    – Martín York

    14 de abril de 2011 a las 6:45

  • jajaja Leí esto hace unas semanas y pensé que estabas loco con esa expresión, no me di cuenta de que era estándar. ¡Buen espectáculo señor! en.wikipedia.org/wiki/Eating_your_own_dog_food

    usuario2918461

    1 de marzo de 2017 a las 14:55

1647576553 926 ¿El compilador gcc C esta escrito en C
oo_miguel

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

Aquí están los recuentos de archivos principales (más de 100) agrupados por extensión dominado 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 GCC se 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 creación, y subdirectorios que incluyen documentación y un conjunto de pruebas.

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

¿El compilador gcc C está escrito en C?

No, gcc se migró a C++ desde 2010. Para más detalles leer
El paso de GCC a C++

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad