Compilateurs

Quelle définition du bloc de base est correcte ?

  1. AUne suite d'instructions sans entrée ni sortie de branchement en son milieu, toujours exécutées à la suite
  2. BL'ensemble de toutes les instructions d'une fonction regroupées en un seul bloc
  3. CLe corps d'une boucle recopié plusieurs fois pour réduire le nombre d'itérations
Afficher la réponse et l'explication

Réponse : A. Une suite d'instructions sans entrée ni sortie de branchement en son milieu, toujours exécutées à la suite

Un bloc de base est une suite d'instructions dont l'entrée n'est qu'au début et la sortie qu'à la fin ; une fois l'exécution commencée, on ne peut ni en sortir ni y entrer en cours de route. On le délimite aux instructions cibles de branchement et juste après les instructions de branchement. L'ordre d'exécution y étant fixé, les optimisations locales sont faciles, et le flot global est représenté par le graphe de flot de contrôle dont les blocs sont les nœuds. Une fonction comprend généralement plusieurs blocs de base, et la recopie du corps de boucle est le déroulage de boucle.

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

Autres questions sur Compilateurs

  1. Dans un graphe de flot de contrôle, quelle combinaison de ce que représentent nœuds et flèches est correcte ?
  2. Quelle caractéristique d'une représentation intermédiaire en forme SSA est correcte ?
  3. 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 φ ?
  4. Quel exemple de repliement de constantes (constant folding) est correct ?
  5. 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 ?

Comparatifs sur ce thème