Isso tem me incomodado por algum tempo. Como o GCC e o g ++ se compilam?
Estou supondo que toda revisão seja compilada com uma revisão criada anteriormente. Isso é verdade? E se for, isso significa que as versões mais antigas do g ++ e do GCC foram gravadas em assembly?
c++
c
compiler-construction
user1010005
fonte
fonte
Respostas:
A versão mais antiga do GCC foi compilada usando outro compilador C, pois havia outras quando ele foi gravado. O primeiro compilador C de todos os tempos (ca. 1973, IIRC) foi implementado no assembly PDP-11 ou na linguagem de programação B que o precedeu, mas, em qualquer caso, o compilador B foi escrito em assembly.
Da mesma forma, o primeiro compilador C ++ (CPre / Cfront , 1979-1983) provavelmente foi implementado primeiro em C, depois reescrito em C ++.Quando você compila o GCC ou qualquer outro compilador de hospedagem automática, a ordem completa de criação é:
Esse processo é chamado de inicialização . Ele testa a capacidade do compilador de se compilar e garante que o compilador resultante seja construído com todas as otimizações que ele próprio implementa.
Edição : Drew Dormann, nos comentários, aponta para o relato de Bjarne Stroustrup sobre a implementação mais antiga do C ++ . Foi implementado em C ++, mas traduzido pelo que Stroustrup chama de "pré-processador" de C ++ para C; não é um compilador completo por sua definição, mas ainda assim o C ++ foi inicializado em C.
fonte
__DATE__
e__TIME__
que variam mesmo entre invocações do mesmo compilador) que o GCC compilado com [GCC compilado com [other]] - caso contrário, isso é um bug e o build de bootstrap de três estágios foi projetado para capturar isso.