TD 3 Optimisation de Code Intermédiaire
TD 3 Optimisation de Code Intermédiaire
TD 3 Optimisation de Code Intermédiaire
Travaux dirigés N° 2
Exercice 3. On étudie dans cet exercice quelques optimisations sur du code trois adresses
découpé en blocs de base. On considère le petit programme suivant :
for i :=0 to 10 {
a :=i+1 ;
b :=i+1 ;
c :=i+2 ;
a+b ; }
1. Traduire le programme en code trois adresses.
2. Découper ce code trois adresses en blocs de base.
3. Représenter le graphe de flot de contrôle ainsi obtenu.
4. Effectuer une élimination de sous-expressions communes sur chacun des blocs.
5. Effectuer une élimination de code mort sur chacun des blocs.
-1-
Exercice 4. Soit le code suivant:
i=m−1;
j=n;
v=a[n];
while ( true )
{
do { i = i + 1 ; } while ( a [ i ] < v ) ;
do { j = j − 1 ; } while ( a [ j ] > v ) ;
i f ( i >= j ) break ;
x=a[i]; // interchanger a[i] et a[j]
a[i]=a[j];
a[j]=x;
}
x=a[i]; // interchanger a[i] et a[n]
a[i]=a[n];
a[n]=x;
-2-