205 votes

Comment les gcc / g ++ amorcé ?

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 ?

188voto

larsmans Points 167484

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:

  1. Construire de nouvelles version de GCC avec l'existant compilateur C
  2. re-construire de nouvelles version de GCC avec celui que vous venez de créer
  3. (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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X