Cela me dérange depuis un moment. Comment GCC et g ++ se compilent-ils?
Je suppose que chaque révision est compilée avec une révision précédemment construite. Est-ce vrai? Et si c'est le cas, cela signifie-t-il que les versions les plus anciennes de g ++ et GCC ont été écrites en assembleur?
La version la plus ancienne de GCC a été compilée à l'aide d'un autre compilateur C, car il y en avait d'autres au moment de son écriture. Le tout premier compilateur C jamais créé (vers 1973, IIRC) a été implémenté soit dans PDP-11 Assembly, soit dans le langage de programmation B qui l'a précédé, mais en tout cas le compilateur B a été écrit dans Assembly . De même, le tout premier compilateur C++ (CPre/ Cfront , 1979-1983) a probablement été d'abord implémenté en C, puis réécrit en C++.
Lorsque vous compilez GCC ou tout autre compilateur auto-hébergé, l'ordre complet de construction est le suivant:
Ce processus est appelé bootstrapping . Il teste la capacité du compilateur à se compiler et s'assure que le compilateur résultant est construit avec toutes les optimisations qu'il implémente lui-même.
[~ # ~] modifier [~ # ~] : Drew Dormann, dans les commentaires, pointe le compte rendu de Bjarne Stroustrup sur le première mise en œuvre de C++ . Il a été implémenté en C++ mais traduit par ce que Stroustrup appelle un "préprocesseur" de C++ en C; pas un compilateur complet par sa définition, mais quand même C++ a été bootstrapé en C.