Compilateurs

Dans un graphe de flot de contrôle, quelle combinaison de ce que représentent nœuds et flèches est correcte ?

  1. ALes nœuds sont les variables, les flèches l'ordre des affectations
  2. BLes nœuds sont les blocs de base, les flèches les branchements et transitions entre blocs
  3. CLes nœuds sont les fonctions, les flèches les inclusions entre fichiers
Afficher la réponse et l'explication

Réponse : B. Les nœuds sont les blocs de base, les flèches les branchements et transitions entre blocs

Le graphe de flot de contrôle a pour nœuds les blocs de base et pour flèches les transitions possibles d'un bloc vers ceux qui peuvent lui succéder (les deux destinations d'un branchement conditionnel, ou le passage direct au bloc suivant). Il sert à repérer les boucles par les flèches arrière ou à analyser d'où à où parviennent les valeurs des variables. Les relations d'appel entre fonctions sont représentées par un graphe d'appels distinct, et les inclusions de fichiers n'ont rien à voir.

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

Autres questions sur Compilateurs

  1. Quelle caractéristique d'une représentation intermédiaire en forme SSA est correcte ?
  2. 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 φ ?
  3. Quel exemple de repliement de constantes (constant folding) est correct ?
  4. En appliquant de façon répétée la propagation et le repliement de constantes au code ci-dessus, quel code obtient-on finalement ?
  5. Quelle description de l'élimination des sous-expressions communes appliquée au code ci-dessus est correcte ?

Comparatifs sur ce thème