Qu'est-ce que Forme SSA ?

Forme de représentation intermédiaire où les variables sont renommées pour que chacune ne soit affectée qu'une seule fois dans le programme. Aux points de jonction, une fonction φ choisit la valeur. Les relations définition-utilisation deviennent explicites, ce qui facilite l'optimisation.

Nom japonais: SSA形式

« Forme SSA » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Compilateurs.

Domaine: Compilateurs

S'entraîner : questions sur Forme SSA

Quelle caractéristique d'une représentation intermédiaire en forme SSA est correcte ?

  1. AChaque variable n'est affectée qu'exactement une fois dans le programme
  2. BToutes les variables sont placées en mémoire et non en registres
  3. CLe programme est réécrit sans aucune instruction de branchement conditionnel
Afficher la réponse et l'explication

Réponse : A. Chaque variable n'est affectée qu'exactement une fois dans le programme

En forme SSA, les variables sont renommées pour n'être affectées qu'une fois, et aux points de jonction une fonction φ choisit la valeur. Par exemple, une variable x affectée deux fois est scindée en x1 et x2, ce qui rend explicite laquelle est utilisée. Les relations définition-utilisation étant claires, les optimisations comme la propagation de constantes ou l'élimination de code mort sont facilitées. Les branchements étant traités par les fonctions φ, les instructions de branchement ne disparaissent pas. Les variables ne sont pas non plus placées en mémoire ; elles sont le plus souvent traitées comme candidates aux registres.

« Forme SSA » dans les explications

Questions mentionnant « Forme SSA » (2)

  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 φ ?

Termes associés

Représentation intermédiaire Allocation de registres Analyse lexicale Analyse syntaxique Arbre syntaxique abstrait (AST) Bloc de base Compilation JIT Débordement (spill) Déroulage de boucle (loop unrolling) Élimination des sous-expressions communes

Retour au glossaire