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?
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?
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 .
Originalmente, foi escrito em alguma linguagem de montagem, em seguida, começou a se alimentar de cachorro.
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.
6.3 O subdiretório gcc
O diretório gcc contém muitos arquivos que fazem parte das fontes C do GCC, outros arquivos usados como parte do processo de configuração e construção e subdiretórios incluindo documentação e um conjunto de testes.
Referência: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html