world tuto program first cpp c++ c compiler-construction

c++ - tuto - ¿Cómo se arranca gcc/g++?



program c++ (1)

La versión más antigua de GCC se compiló usando otro compilador de C, ya que había otros cuando se escribió. El primer compilador de C alguna vez (aproximadamente 1973, IIRC) se implementó en el ensamblado PDP-11 , o en el lenguaje de programación B que lo precedió, pero en cualquier caso el compilador B se escribió en ensamblaje. Del mismo modo, el primer compilador de C ++ (CPre / Cfront , 1979-1983) probablemente se implementó primero en C, y luego se reescribió en C ++.

Cuando compila GCC o cualquier otro compilador autohospedado, el orden completo de construcción es:

  1. Crear una nueva versión de GCC con el compilador de C existente
  2. reconstruye la nueva versión de GCC con la que acabas de construir
  3. (opcional) repita el paso 2 para fines de verificación.

Este proceso se llama bootstrapping . Prueba la capacidad del compilador de compilarse y se asegura de que el compilador resultante se construya con todas las optimizaciones que implementa.

EDITAR : Drew Dormann, en los comentarios, apunta a la cuenta de Bjarne Stroustrup de la implementación más temprana de C ++ . Fue implementado en C ++ pero traducido por lo que Stroustrup llama un "preprocesador" de C ++ a C; no es un compilador completo según su definición, pero aún así C ++ fue bootstrapped en C.

Esto me ha estado molestando por un tiempo. ¿Cómo se compilan gcc / g ++? Supongo que cada revisión se compila con una revisión previamente creada. ¿Es esto cierto? Y si lo es, ¿significa que las versiones más antiguas de g ++ / gcc se escribieron en ensamblaje?