O compilador gcc C é escrito no próprio C? Ou é escrito em Assembleia? Se o compilador é escrito em C, então o que o compilador é usado para compilar o código do compilador?
c
gcc
compiler-construction
euforia83
fonte
fonte
Respostas:
A história específica do gcc é fornecida no Wiki do GCC . O ponto mais geral é que os compiladores geralmente são compilados originalmente com algum outro compilador até que sejam poderosos o suficiente para se compilarem. Como alternativa, é possível escrever um compilador básico que pode lidar com um subconjunto de seus recursos no assembler e construir a partir daí. Mas, novamente, isso quase nunca é mais necessário. Existem muitos compiladores disponíveis, em uma variedade de idiomas. Mesmo quando Stephen Johnson estava escrevendo pcc (um dos primeiros compiladores C), havia compiladores para B disponíveis, junto com muitas outras linguagens. O gcc tinha vários compiladores para escolher para compilá-lo originalmente, e RMS diz que estava usando o compilador Pastel pelo menos durante seu desenvolvimento inicial.
Lembre-se de que não há requisitos para que um compilador C seja escrito em C. Você poderia escrevê-lo em Perl se quisesse. Não há nenhum requisito de que um compilador para uma determinada plataforma seja originalmente escrito nessa plataforma (sistemas embarcados quase sempre são compilados em algum outro sistema). Portanto, há muitas maneiras de obter um bootstrap.
Esta questão tem algumas sutilezas interessantes relacionadas à primeira instância de bootstrap do compilador. Se você fosse muito inteligente, poderia usar esse bootstrap para fazer algo incrível, brilhante e assustador .
fonte
Originalmente, foi escrito em alguma linguagem de montagem, em seguida, começou a se alimentar de cachorro.
fonte
Embora este seja obviamente apenas um indicador muito aproximado, achei esta lista rápida no
gcc-5.1.0-src/gcc/
diretório interessante. Este diretório contém as principais fontes do próprio GCC (exceto para bibliotecas em tempo de execução).Aqui estão as principais contagens de arquivos (mais de 100) agrupadas por extensão dominada por arquivos C e 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
Observe que hoje em dia
GCC
se refere à GNU Compiler Collection, não apenas ao GNU C Compiler.Referência: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html
fonte