Compilateurs

Quelle caractéristique du code à trois adresses, l'une des représentations intermédiaires, est correcte ?

  1. AUne instruction peut contenir autant d'opérations et de parenthèses que voulu
  2. BUne instruction comporte au plus trois adresses et une opération
  3. COn y écrit toujours comme adresses les adresses physiques en mémoire
Afficher la réponse et l'explication

Réponse : B. Une instruction comporte au plus trois adresses et une opération

Le code à trois adresses décompose les expressions complexes en une suite d'instructions simples ne comportant qu'une opération. Par exemple, x = (a + b) * c devient t1 = a + b et x = t1 * c ; une instruction fait intervenir au plus trois adresses : le résultat et deux opérandes. Les valeurs intermédiaires reçoivent des noms temporaires (t1, etc.). L'ordre de calcul devient explicite, ce qui facilite l'optimisation et la conversion en instructions du CPU. Les adresses sont des variables ou des noms temporaires, et non des adresses physiques.

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

Autres questions sur Compilateurs

  1. Que détermine l'analyse de vivacité (liveness), effectuée en préparation de l'allocation de registres ?
  2. 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 ?
  3. 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)
  4. Quel est l'enchaînement courant permettant d'obtenir un exécutable à partir d'un programme C ?
  5. 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 ?

Comparatifs sur ce thème