Compilateurs

Quel est le principal avantage d'utiliser, à l'intérieur d'un compilateur, une représentation intermédiaire (IR) indépendante du langage source comme du CPU ?

  1. AElle permet de compiler sans lire le code source
  2. BLe CPU pouvant l'exécuter telle quelle, la génération de code machine devient inutile
  3. CElle sépare la partie avant propre à chaque langage de la partie arrière propre à chaque CPU, et les optimisations peuvent être partagées
Afficher la réponse et l'explication

Réponse : C. Elle sépare la partie avant propre à chaque langage de la partie arrière propre à chaque CPU, et les optimisations peuvent être partagées

Pour prendre en charge M langages et N CPU, un compilateur par combinaison en exigerait M×N ; avec une représentation intermédiaire commune, M parties avant (frontend) du langage vers l'IR et N parties arrière (backend) de l'IR vers le CPU suffisent. La plupart des optimisations, réalisées une fois sur l'IR, profitent à tous les langages et CPU. L'IR n'est pas directement exécutable par le CPU et doit finalement être convertie en code machine.

S'entraîner sur ce thème Retour au thème

Autres questions sur Compilateurs

  1. Quelle définition du bloc de base est correcte ?
  2. Dans un graphe de flot de contrôle, quelle combinaison de ce que représentent nœuds et flèches est correcte ?
  3. Quelle caractéristique d'une représentation intermédiaire en forme SSA est correcte ?
  4. Mis en forme SSA, le code ci-dessus comporte après l'instruction if une expression du type « x3 = φ(x1, x2) ». Quel est le rôle de cette fonction φ ?
  5. Quel exemple de repliement de constantes (constant folding) est correct ?

Comparatifs sur ce thème