Compilateurs

Dans une fonction, le nombre maximal de valeurs vivantes simultanément est de 5. Dans le cas simple où le graphe d'interférence ne crée pas d'autre contrainte que ces 5 valeurs, combien de registres faut-il au minimum pour placer toutes les valeurs en registre sans déversement ?

  1. A5
  2. B4
  3. C10
Afficher la réponse et l'explication

Réponse : A. 5

Les 5 valeurs vivantes simultanément interfèrent toutes entre elles ; elles forment dans le graphe d'interférence 5 nœuds tous reliés (graphe complet), dont la coloration exige au moins 5 couleurs. Dans le cas simple où les intervalles de vie se représentent comme des intervalles, comme dans un code linéaire, le graphe se colore avec un nombre de couleurs égal au maximum de valeurs vivantes simultanément ; 5 registres suffisent donc. Avec 4, il faudrait quelque part déverser une valeur en mémoire. 10 est plus que nécessaire.

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

Autres questions sur Compilateurs

  1. Si une boucle de 100 itérations est réécrite par déroulage avec quatre copies du corps, combien y a-t-il de tests de comptage et de branchements ? (100 est divisible par 4)
  2. Quel est l'enchaînement courant permettant d'obtenir un exécutable à partir d'un programme C ?
  3. Comment appelle-t-on l'optimisation qui examine par une petite fenêtre de courtes séquences du code machine généré pour remplacer des combinaisons d'instructions inefficaces par de meilleures instructions ?
  4. Dans le code ci-dessus, quelle optimisation s'applique ensuite après l'expansion en ligne de sq, et avec quel résultat ?
  5. Quelle définition du pipeline logiciel (software pipelining) est correcte ?

Comparatifs sur ce thème