Cela a été m’énerve pendant un certain temps. Comment faire du CCG / g ++ compiler eux-mêmes ? Je suppose que chaque révision obtient compilée avec une révision précédente. Est-ce vrai ? Et si c’est, ça veut dire que la plus ancienne g + + / versions de gcc ont été écrites à l’Assemblée ?
Réponse
Trop de publicités?L'ancienne version de GCC a été compilé à l'aide d'un autre compilateur C, car il y en a d'autres quand elle a été écrite. Le premier compilateur C jamais (ca. 1973, IIRC) a été mis en œuvre, soit dans le PDP-11 de l'assemblée, ou dans le B langage de programmation qui l'a précédé, mais en tout cas, le B compilateur a été écrit dans l'assemblée. De même, le premier compilateur C++ (CPre/Cfront, de 1979 à 1983) ont probablement été implémenté en C, puis réécrit en C++.
Lors de la compilation de GCC ou de toute autre auto-hébergement compilateur, l'intégralité de la commande de construction est de:
- Construire de nouvelles version de GCC avec l'existant compilateur C
- re-construire de nouvelles version de GCC avec celui que vous venez de créer
- (facultatif) répétez l'étape 2 pour des fins de vérification.
Ce processus est appelé amorçage. Il teste le compilateur de la capacité de la compilation elle-même et permet de s'assurer que le compilateur est construit avec toutes les optimisations qu'il a lui-même met en œuvre.
EDIT: Drew Dormann, dans les commentaires, points de Bjarne Stroustrup compte de la première mise en œuvre de C++. Il a été implémenté en C++, mais traduit par ce que Stroustrup appelle une "préprocesseur" du C++ à C; pas un compilateur complet de par sa définition, mais encore C++ a été amorcé en C.