Le compilateur gcc C est-il écrit en C lui-même?

Le compilateur gcc C est-il écrit en C lui-même? Ou est-ce écrit dans l’Assemblée? Si le compilateur est écrit en C, alors quel est le compilateur utilisé pour comstackr le code du compilateur?

L’historique spécifique à gcc est donné sur le wiki GCC . Le point plus général est que les compilateurs sont généralement compilés à l’origine avec un autre compilateur jusqu’à ce qu’ils soient suffisamment puissants pour se comstackr eux-mêmes. Alternativement, il est possible d’écrire un compilateur de base capable de gérer un sous-ensemble de vos fonctionnalités dans l’assembleur, et de construire à partir de là. Mais encore une fois, cela n’est presque plus nécessaire. De nombreux compilateurs sont disponibles dans différentes langues. Même lorsque Stephen Johnson écrivait pcc (un des premiers compilateurs C), il existait des compilateurs pour B, ainsi que de nombreuses autres langues. gcc avait plusieurs compilateurs à choisir pour le construire à l’origine, et RMS dit qu’il utilisait le compilateur Pastel au moins pendant son développement initial.

Rappelez-vous, il n’est pas nécessaire qu’un compilateur C soit écrit en C. Vous pouvez l’écrire en Perl si vous le souhaitez. Il n’est pas nécessaire qu’un compilateur pour une plate-forme donnée soit initialement écrit sur cette plate-forme (les systèmes embarqués sont presque toujours compilés sur un autre système). Il y a donc beaucoup de façons de se faire démarrer.

Cette question présente des subtilités intéressantes liées à la première instance de démarrage du compilateur. Si vous étiez très intelligent, vous pourriez utiliser ce bootstrap pour faire quelque chose d’incroyable, de génial et de terrifiant .

À l’origine, il était écrit dans un langage d’assemblage puis il a commencé à nourrir les chiens eux-mêmes.

Bien que ce soit évidemment un indicateur très approximatif, j’ai trouvé cette liste rapide sur le répertoire gcc-5.1.0-src/gcc/ intéressant. Ce répertoire contient les principales sources de GCC (à l’exception des bibliothèques d’exécution).

Voici les principaux compteurs de fichiers (plus de 100) regroupés par extension, dominés par les fichiers C et 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 

Veuillez noter que de nos jours, GCC fait référence à la collection de compilateurs GNU, pas seulement au compilateur GNU C.

6.3 Le sous-répertoire gcc

Le répertoire gcc contient de nombreux fichiers faisant partie des sources C de GCC, d’autres fichiers utilisés dans le cadre du processus de configuration et de génération, ainsi que des sous-répertoires, notamment la documentation et une suite de tests.

Référence: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html