Compilateurs

Pour l'allocation de registres par coloration du graphe d'interférence, quelle combinaison de ce que représentent nœuds et arêtes est correcte ?

  1. ALes nœuds sont les instructions, les arêtes l'ordre d'exécution
  2. BLes nœuds sont les registres, les arêtes le câblage entre registres
  3. CLes nœuds sont les valeurs, les arêtes la relation d'être vivantes simultanément
Afficher la réponse et l'explication

Réponse : C. Les nœuds sont les valeurs, les arêtes la relation d'être vivantes simultanément

Dans le graphe d'interférence, les variables et valeurs intermédiaires sont les nœuds, et deux valeurs toutes deux encore utilisées (vivantes) à un même instant sont reliées par une arête. Des valeurs reliées étant nécessaires simultanément, elles ne peuvent partager un registre. Avec k registres, si l'on parvient à colorier le graphe en k couleurs sans que deux voisins aient la même couleur, chaque couleur correspond directement à un registre. Sinon, certaines valeurs sont déversées en mémoire (spill). Ce n'est pas un graphe de l'ordre des instructions ni du câblage des registres.

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

Autres questions sur Compilateurs

  1. Lorsqu'un « déversement » (spill) se produit lors de l'allocation de registres, qu'advient-il du code généré ?
  2. Quel est le principal objectif de l'ordonnancement des instructions par le compilateur ?
  3. Quel effet produit l'optimisation des appels terminaux appliquée au dernier appel récursif de la fonction ci-dessus ?
  4. Quelle différence entre compilateur et interpréteur est correcte ?
  5. Quelle caractéristique d'un environnement d'exécution utilisant la compilation JIT est correcte ?

Comparatifs sur ce thème