Le compilateur gcc C est-il écrit en C lui-même? Ou est-il écrit en Assemblée? Si le compilateur est écrit en C, quel est le compilateur utilisé pour compiler le code du compilateur?
Le compilateur gcc C est-il écrit en C lui-même? Ou est-il écrit en Assemblée? Si le compilateur est écrit en C, quel est le compilateur utilisé pour compiler le code du compilateur?
Réponses:
L'historique spécifique de gcc est donné sur le Wiki GCC . Le point le 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 compiler 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, ce n'est presque plus nécessaire. Il existe de nombreux compilateurs disponibles, dans une variété de langues. Même lorsque Stephen Johnson écrivait pcc (l'un des premiers compilateurs C), il y avait des compilateurs pour B disponibles, ainsi que de nombreux autres langages. gcc avait plusieurs compilateurs parmi lesquels choisir pour le construire à l'origine, et RMS dit qu'il utilisait le compilateur Pastel au moins pendant son développement initial.
N'oubliez pas qu'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 existe donc de nombreuses façons de se faire démarrer.
Cette question a quelques subtilités intéressantes liées à la première instance d'amorçage du compilateur. Si vous étiez très intelligent, vous pourriez utiliser ce bootstrap pour faire quelque chose d'incroyable, brillant et terrifiant .
À l'origine, il a été écrit dans un langage d'assemblage, puis il a commencé à se nourrir lui-même.
Bien que ce ne soit évidemment qu'un indicateur très approximatif, j'ai trouvé cette liste rapide sur l' gcc-5.1.0-src/gcc/
annuaire intéressante. Ce répertoire contient les principales sources de GCC lui-même (à l'exception des bibliothèques d'exécution).
Voici les principaux comptes de fichiers (plus de 100) regroupés par extension dominée 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 se GCC
réfère à 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 qui font partie des sources C de GCC, d'autres fichiers utilisés dans le cadre du processus de configuration et de construction, et des sous-répertoires comprenant la documentation et une suite de tests.
Référence: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html