Compilateurs
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 φ ?
if (c) x = 1;
else x = 2;
y = x + 3;
- AChoisir et renvoyer la plus grande des valeurs x1 et x2
- BCalculer et renvoyer la somme de x1 et x2
- CChoisir x1 ou x2 selon le chemin emprunté
Afficher la réponse et l'explication
Réponse : C. Choisir x1 ou x2 selon le chemin emprunté
En forme SSA, l'affectation de la branche then est nommée x1 et celle de la branche else x2 ; il faut donc indiquer quel x utiliser pour le calcul de y après la jonction. La fonction φ est la notation qui exprime le choix de valeur au point de jonction : x1 si l'on vient de la branche then, x2 si l'on vient de la branche else. Le code machine réel ne comporte pas d'instruction φ, qui est finalement remplacée par des copies de registres ou équivalent. Cela n'a rien à voir avec la comparaison ou la somme des valeurs.