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?
c
gcc
compiler-construction
euphorie83
la source
la source
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 .
la source
À l'origine, il a été écrit dans un langage d'assemblage, puis il a commencé à se nourrir lui-même.
la source
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.Référence: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html
la source