G´en´eration de Code
L3 Projet Compilation
Paul Feautrier
ENS de Lyon
perso.ens-lyon.fr/paul.feautrier
21 f´evrier 2009
1 / 31
Les trois phases de la g´en´eration de code
Le probl`eme des alias
Premi`ere partie I
Questions d’organisation
2 / 31
Les trois phases de la g´en´eration de code
Le probl`eme des alias
Les trois phases de la g´en´eration de code
La g´en´eration du code assembleur ne peut pas se faire en une seule
passe :
IS´election des instructions qui impl´ementent le code source
IDistribution des donn´ees entre la m´emoire et les registres
(allocation des registres)
IOrdonnancement des instructions
3 / 31
Les trois phases de la g´en´eration de code
Le probl`eme des alias
Interactions
Les trois phases ne sont pas ind´ependantes :
Ix = x + y*z; :
ISi le processeur a une instruction MAC : une instruction, pas
de registre
ISinon, deux instructions et un registre pour loger y*z
Ia = b+c; : le code est diff´erent suivant que cest en
m´emoire ou dans un registre.
Il n’y a pas d’ordre id´eal ; recherche de point fixe par it´eration ?
4 / 31
Les trois phases de la g´en´eration de code
Le probl`eme des alias
Heuristiques, I
On ne se peoccupe que des variables originales du programme
source. On met de cot´e suffisamment de registres pour les
temporaires n´ecessaires `a l’´evaluation des expressions.
IAvantage : le probl`eme est consid´erablement simplifi´e.
IInconv´enient : une seule grosse expression peut immobiliser un
grand nombre de registres.
IInconv´enient : s’il y a peu de registres, il peut ˆetre impossible
de loger tous les temporaires.
5 / 31
1 / 31 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 !