Master Info - 2013-2014
Compilation
TD4 - G´en´eration de code, et optimisation
1 G´en´eration de code
1.1 Exo TD3
Cf l’´enonc´e du TD3.
1.2 Exo Suppl´ementaire
n :=0;
x0 :=0 ;
x1 :=0 ;
d e l t a := bb4ac ;
i f d e l t a >0then
begin
n : =2;
x0 := (bs q r t ( bb4ac ) ) / ( 2 a ) ;
x1 := (b + s q r t ( bb4ac ) ) / ( 2 a ) ;
end
else
begin
i f d e l t a = 0 then begin
n : =1;
x0 := bs q r t ( bb4ac ) ;
x1 := x0 ;
end ;
end ;
On suppose que la fonction sqrt est d´efinie et utilisable via un appel. Donner le code 3
adresses correspondant `a ce code.
2 TD4 : Optimisation : expressions communes
Apr`es la production de code 3 adresses, il reste `a faire la production du code assembleur :
election des instructions
Allocation des registres
Optimisations . . .
Probl`emes sp´ecifiques `a la machine cible Pour en savoir plus : Compilateurs (dragon book)
Aho, Sethi, Ullman
Dans la suite nous regardons les optimisations ind´ependantes de machine cible. Elles sont
en g´en´eral r´ealis´ees sur le graphe de flot de contrˆole (cf document joint).
2.1 Exo du TD : sous expressions-communes.
Soit le code `a trois adresses suivant :
TD4 MIF12, Master Info - 2013-2014, L. Gonnord & E. Guillou 1/4
(1) a=b+c
(2) b=a+c
d=c+e
si d>7 aller a (8)
t=a+c
v=c+e
aller a (10)
(8) t=b+c
v=a+c
(10) b=a+c
a=b+c
1. Construire le graphe de flot de contrˆole.
2. On cherche `a r´ealiser l’optimisation des sous expressions communes. Pour chaque bloc,
calculer les ensembles d’expressions produites et supprim´ees : Prod et Sup.
3. Calculer les ensembles des expressions disponibles en entr´ee et en sortie de chaque bloc.
4. Avec ce r´esultat, optimiser le code.
Avec une boucle Mˆemes questions avec ce programme :
x:=a+b;
y:=a*b;
while(y>a+b) do
a:=a+a;
x:=a+b;
done
2.2 Pour s’entraˆıner - exos corrig´es
La d´efinition des diff´erents ensembles est dans le cours, sur le web (c’est classique) ou
par exemple ici : http://laure.gonnord.org/pro/teaching/m2ens analysestatique slides2012.pdf
Attention ;.les calculs ne sont pas garantis sans erreur.
Graphe de flot en´erer le graphe de flot de contrˆole pour le code suivant :
while d>0 do{
a:=b+c;
d:=d-b;
e:=a+f;
if e>0
{f:=a-d;b:=d+f}
else
{e:=a-c}
b:=a+c}
On obtient pour graphe de flot de contrˆole :
TD4 MIF12, Master Info - 2013-2014, L. Gonnord & E. Guillou 2/4
B0
d > 0?
a:= b+c
d:= db
e:= a+f
B1
e > 0?
e:= ac
f:= a+d
b:= d+f
b:= a+c B5
B4
B3
On met le test dans le bloc B1.
Variables actives Sur le graphe de flot de l’exercice pr´ec´edent :
1. ´
Ecrire et r´esoudre le syst`eme d’´equations relatif aux ensembles Gen,Kill,In et Out, en
prenant bien soin d’initialiser les ensembles correctement.
2. Supprimer les instructions inutiles (“code mort”).
BiGen Kill In Out In Out In Out In Out In Out In Out
B0dd bcdf bcdf bcdf bcdf bcdf bcdf bcdf bcdf bcdf bcdf bcdf
B1bcdf ade bcdf e bcdf acde bcdf acde bcdf acde bcdf acde bcdf acde
B2ee acd acde acd acde acd acde acdf acdef acdf acdef acdef
B3ac e ad ac acd acd acd acdf acdf acdf acd acdf acd acdf
B4ad bf ac ac ac acd acd acdf acd acdf acdf acdf acdf acdf
B5ac b ac d acd bcdf acdf bcdf acdf bcdf acdf bcdf acdf bcdf
On a donc : Out(B3) = {a, c, d, f}.best affect´ee en B3mais n’est pas vivante en sortie de
B3, on peut donc enlever cette affectation.
De mˆeme, dans le bloc 4, en’est pas vivante en sortie, donc on peut supprimer l’affectation
e:= ....
Variables Actives Apr`es g´en´eration de code, on obtient le programme suivant :
TD4 MIF12, Master Info - 2013-2014, L. Gonnord & E. Guillou 3/4
d1:i:= m1
d2:J:= n
d3:a:= u1
d4:i:= i+ 1
d5:j:= j1
d7:i:= u3
d6:a:= u2
B1
B2
B3B4
Supprimer le code mort. Initialisation :
BiGen Kill
B1m, n, u1i, J, a
B2i, j i, j
B3u2a
B4u3i
It´erations
BiIn Out In Out In Out In Out
B1m, n, u1i, j m, n, j, u1u2, u3, i, j m, n, u1, u2, u3, j u2, u3, i, j u1, u2, u3, m, n, j idem
B2i, j u2, u3u2, u3, i, j i, j, u2, u3u2, u3, i, j u2, u3, i, j u2, u3, i, j idem
B3u2i, j i, j, u2u2, u3, i, j u2, u3, i, j u2, u3, i, j u2, u3, i, j idem
B4u3i, j u3, j u2, u3, i, j u2, u3, j u2, u3, i, j u2, u3, j idem
Conclusion : on peut supprimer d2,d3et d6car J, a 6∈ Out(B1) et a6∈ Out(B3).
TD4 MIF12, Master Info - 2013-2014, L. Gonnord & E. Guillou 4/4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !