Академический Документы
Профессиональный Документы
Культура Документы
1 D. Barthou
Description d'un compilateur Description des langages de programmation Analyse de code, optimisation Mthodes de typage ro!l"mes thori#ues $graphes, langages% et prati#ues $&aire un compilateur%
2 D. Barthou
Description d'un compilateur Description des langages de programmation Analyse de code, optimisation Mthodes de typage ro!l"mes thori#ues $graphes, langages% et prati#ues $&aire un compilateur% Cours et (D sur les aspects thori#ues, sur les mthodes de compilation )cances prati#ues sur les outils de compilation, sur l'asm *+, ro-et de compilation
' D. Barthou
Dans ce module:
1- Introduction
Intrt de la compilation
/util incontourna!le, #uel#ue soit le langage Meilleure connaissance des compilateurs 0 meilleure programmation (echni#ues de compilation rutilisa!les dans nom!reu* conte*tes $notamment analyse de code% )u-et acti& de recherche1
2angages pour le paralllisme, pour les machines a3ec acclrateurs matriels Domain )peci&ic 2anguages Compilation pour l'em!ar#u
. D. Barthou
1- Introduction
Description d'un compilateur
De&initions1 Un compilateur est un programme qui prend en entre un programme et le transforme en un autre programme. Un interprteur est un programme qui prend en entre un programme et l'excute.
4 D. Barthou
1- Introduction
Description d'un compilateur
De&initions1 Un compilateur est un programme qui prend en entre un programme et le transforme en un autre programme. Un interprteur est un programme qui prend en entre un programme et l'excute.
2angages compils ou interprts 5 C, 6a3a, perl, lisp, s#l, assem!leur Compilateur, interprteur ou autre chose 5 2a(e7, ma8e, 3isualiseur postscript, matla!
, D. Barthou
1- Introduction
Objectifs possibles du compilateur
rser3er la smanti#ue $o!ligatoire% :nrer un code le plus rapidement possi!le (rou3er toutes les erreurs le*icales, synta*i#ues et smanti#ues
rou3er #ue le code gnr est correct, #ue le code d'entre respecte une spec. )'e*cutant le plus rapidement possi!le Consommant le moins d'nergie possi!le 2e plus petit possi!le
9 D. Barthou
:nrer un code
1- Structure du compilateur
Dcomposition en couches
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
Analyse le*icale1 lit le programme, reconnait cha#ue mot Analyse synta*i#ue1 3ri&ie la grammaire Analyse smanti#ue1 3ri&ie le sens du programme $e*1 types% ;<1 une inter&ace sparant les &ront-end, middle-end et !ac8end du compilateur
=*cuta!le langage B
+ D. Barthou
1- Structure du compilateur
Dcomposition en couches Changement de langage d'entre
=*cuta!le langage C
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
=*cuta!le langage B
Cours compilation 2011-2012
> D. Barthou
1- Structure du compilateur
Dcomposition en couches Changement de langage ci!le
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
=*cuta!le langage D
Cours compilation 2011-2012
10 D. Barthou
1- Structure du compilateur
E emples de dcomposition !cc1
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
2angage d'entre1 C, C??, 6a3a, @ortran, A Asm ci!le1 *+, $multiples 3ariantes%, arm, mips, ... (ree-ssa $gimple%1 plutot haut ni3eau ;(21 pour la gnration de code asm $lisp-li8e%
=*cuta!le langage B
11 D. Barthou
Compilateurs, principes, techniques et outils, Aho, )ethi et Bllman, <nterditions Modern Compiler Design, :rune, Bal, 6aco!s, 2angendoen, Ciley Modern Compiler, Implementation in C. Appel, :ins!urg, Cam!ridge B. ress Optimizing compilers for modern architectures, Allen, Dennedy, Morgan-Dau&man d!anced compiler design implementation, Muchnic8, MorganDau&man
12 D. Barthou
$- %nal&se le icale
Objectif1
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
2ecture du programme d'entre ;econnaissance des le*"mes $to8ens%1 lments constituti&s du langage, mots cls, noms de 3aria!les, sym!oles de ponctuation...
=*cuta!le langage B
Cours compilation 2011-2012
1' D. Barthou
$- 'an#a#es r#uliers
Cadre thori(ue pour l'anal&se le icale
Alpha!et1 ensem!le &ini de sym!oles $lettres% Mot1 suite &inie de lettres, operation1 concatnation. Mot 3ide1 2angage1 ensem!le de mots =*pressions rguli"res $rappels%
Dcri3ent les langages rguliers $ou rationnels% @ormes a3ec les oprateurs E, F , la concatnation et
1. D. Barthou
$- 'an#a#es r#uliers
%utomates r#uliers
;econnaissent les e*pressions rguli"res Distinction importante1 automates dterministes et automates nondterministes )chmas d'e#ui3alences
14 D. Barthou
;econnaissance de GlolH
1, D. Barthou
$- %utomates finis
=*emple d'automate &ini non dterministe
;econnaissance de Gs8ateH
19 D. Barthou
Construction de ;1 . ;2
1+ D. Barthou
Construction de ;1 F ;2
1> D. Barthou
Construction de ;E
20 D. Barthou
$- Dterminisation de l'automate
%l#o de dterminisation /n part d'un automate $I,,,n0,NF) /n construit un automate $J,,,#0,J@%
#0 K -&ermeture$n0% <nitialiser J a3ec #0 Cor8list K #0 (ant #ue $Cor8list LK empty% Choisir #i dans Cor8list our cha#ue caract"re c q = -&ermeture$$#i,c%% $#i,c% K # )i # pas dans J, a-outer # M Cor8list et A-outer # M J
2es tats du nou3el automate sont des ensem!les d'tat de l'ancien. Algo par calcul de point &i*e Comple*it e*ponentielle au pire.
21 D. Barthou
$- ,inimisation de l'automate
%l#o de minimisation
;a&&ine la partition en sparant les tats #ui n'ont pas le mNme comportement Algorithme par calcul de point &i*e =*emple complet
22 D. Barthou
$- !nration de le )mes
Objectif de l'anal&seur le ical:
Bn type $3er!e, nom, mot cl, identi&icateur, A% Bne 3aleur $manger, lion, &or, toto, ...%
Action M cha#ue reconnaissance de le*"me1 transmettre le le*"me pour l'analyse synta*i#ue 2e*"mes pre&i*es d'autres1 on prend les plus longs Am!iguit entre le*"mes1 rsolution conte*tuelle $a3ec analyse synta*i#ue% ou pr&rence donne M un type de le*"me
2' D. Barthou
Difficults:
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
)i o8, gn"re un ar!re synta*i#ue )inon, gnre des messages d'erreurs appropris
=*cuta!le langage B
Cours compilation 2011-2012
2. D. Barthou
-- !rammaires al#bri(ues
!rammaire:
Oaria!les $non terminau*% et sym!oles terminau* $le*"mes% )ym!ole initial $)% ;"gles de production du type A0
24 D. Barthou
-- !rammaires al#bri(ues
!rammaire:
E emple:
Oaria!les $non terminau*% et )0= sym!oles terminau* $le*"mes% = 0 = ? =F = Q =F= E =F( )ym!ole initial $)% ( 0 id F n F $=% ;"gles de production du type A3ec A0 ),=,( les 3aria!les de la grammaire, A3ec un mot de 3aria!lesPle*"mes ?,-,E,$,%,R,id,n les le*"mes de la grammaire
2, D. Barthou
-- !rammaires al#bri(ues
.appels: Dri/ation1 application d'une r"gle M un mot =*1 id ? = E ( 0 id ? ( E ( %rbre de dri/ation: reprsentation des dri3ations sous &orme d'ar!re. 2es &euilles1 les le*"mes. ;acine1 ) !rammaire ambi#0e: il e*iste un mot reconnu par la grammaire, a3ec 2 ar!res de dri3ation =*1 n ? n E n
Cours compilation 2011-2012
29 D. Barthou
Dri/ation 1 #auche2droite: Application d'une r"gle sur la 3aria!le la plus M gauchePdroite du mot. =*1 n ? = ? (Eid 0 n ? ( ? (Eid
-- .econnaissance de mots
.econnaissance de mots:
Construction d'automate M pile :rammaire alg!ri#ue 0 automate M pile non dterministe $3u l'anne derni"re%
2+ D. Barthou
-- .econnaissance de mots
.econnaissance de mots:
3robl)me:
:rammaire alg!ri#ue 0 automate M pile non dterministe $3u l'anne derni"re% Solution:
as d'algo de dterminisation d'automates M pile L Certains langages alg!ri#ues pas reconnus par automates dterministes...
;estreindre les langages M des langages non am!igus )ous classe des langages alg!ri#ues pour a3oir algo de reconnaissance e&&icaces.
-- %nal&se descendante
3rincipe:
artir de ),
(rou3er la r"gle M appli#uer en ) 0 = R =0(; &onction de la prochaine lettre (0nF$=% $le*"me% M lire ; 0 ?= F -= F E= F Classe '' d'anal&se:
Dterminer le*"mes en premi"re position de production Ceu* #ui peu3ent sui3re une 3ar.
'0 D. Barthou
-- %nal&se descendante
Calcul des prem par point fi e
Calcul de sui/
prem$=% Sprem$%F=0T prem$a% K SaT prem$% prem$% prem$% prem$U% si prem$% prem$=% sui3$=% si prem$E%
'1 D. Barthou
prem$)% K prem$=% prem$=% K Sn , $T prem $(% K Sn, $T prem$;% K S?, - , E, %, RT )ui3$;% K sui3$=% K S%, RT
'2 D. Barthou
ile1 tat de la reconnaissance 2es prem et sui31 constituent la ta!le de transition des tats de l'automate (a!le des premsPsui31 ta!le de prdiction )'arrNte sur pile 3ide. @acile M implmenter, M comprendre.
'' D. Barthou
=mpiler ) (ant #ue pile pas 3ide )i a sur pile, a M lire 0 dpiler et lire a )inon si A sur pile, a M lire 0 remplacer A par si a prem$w% et A 0 V )inon erreur.
Solutions: * 'e3er am!iguit si possi!le $pas tou-ours &aisa!le% 0 Drcursi3er. = 0 (;, ; 0 ?= F 0 =ssayer 2, ', A caract"res d'a3ance. LL Augmente comple*it automate 0 C& solutions prcdentes. /u Changer de type d'analyse...
'. D. Barthou
:rammaires am!igues =0=?=F=E= ;"gles rcursi3es gauche =0=?(F( 1 caract"re d'a3ance $loo8 ahead% ne su&&it pas1 = 0 id ? = F id Q = lusieurs r"gles appli#ua!les pour un caract"re $con&lit%
-- %nal&se ascendante
3rincipe:
0 on a plus d'in&ormation #ue analyse descendante $tout le mot au lieu de 1 seul caract"re pour choisir la r"gle% 0 analyses plus puissantes
(erme gnri#ue1 2;, 2e&t to right parsing, ;ightmost deri3ation 2;$0%, 2;$1%, )2;$1%, 2A2;$1%, 2;$8%, ...
'4 D. Barthou
Base sur une ta!le de prdiction (a!le utilise 2 actions, pou3ant Ntre dcomposes en actions lmentaires d'automate M pile
2a ta!le dit #uelle action &aire en &onction de l'tat courant et du sym!ole M lire $loo8 ahead% ou du sym!ole sur la pile
'9 D. Barthou
/n part de l'tat 1, le prochain le*"me est GaH 0 action s41 shi&t et on passe dans l'tat 4
5 a 1 1
'+ D. Barthou
;educe $r %1 on a reconnu une partie droite de r"gle A 0 V. /n dpile 2FVF sym!oles $le*"mes et tats%, on regarde l'tat sur le sommet de pile et on empile A et le nou3el tat.
/n part de l'tat 4, le sym!ole du haut de pile est (, &aire l'action reduce = 0 =?(
5
T
4
+
"
'> D. Barthou
11 ) 0 = R 21 = 0 ( '1 = 0 = ? ( .1 ( 0 id 41 ( 0 $ = %
s n 3eut dire shi&t et passe dans l'tat n r n 3eut dire #u'on &ait un reduce de la r"gle numro n
2'automate est alors non dterministe (ou-ours un pro!l"me en cas de grammaire am!igue )2;$0%, 2;$0%, )2;$1%, 2A2;$1%, 2;$1%
=*cuta!le langage B
Cours compilation 2011-2012
.' D. Barthou
=*cuta!le langage B
Cours compilation 2011-2012
.. D. Barthou
2e* pour gnrateur d'analyseur le*ical 2lgen, AI(2; pour gnrateurs d'analyseurs 22 $22$8%% Wacc pour gnrateur d'analyseur 2; $2A2;$1%%
0 Btilisent des ta!les comprsses 0 (r"s e&&icaces ossi!le d'crire un analyseur le*ical M la main, Di&&icile pour un analyseur synta*i#ue.
Cours compilation 2011-2012
.4 D. Barthou
;appel e*pressions reguli"res, automates assage des e*pressions rguli"res au* automates dterministes :nration de le*"me M cha#ue tat &inal 0 analyseur synta*i#ue :rammaire pour d&inir un langage our l'analyse synta*i#ue1 2 approches, ascendante et descendante
Construction de la ta!le de prdiction analyseur 22, &onctionnement automate M pile 2imites analyse 22 @onctionnement automate M pile pour 2;, M partir de la ta!le de prdiction
., D. Barthou
7- %nal&se smanti(ue
2a smanti#ue d&init le sens du programme C'est #uoi le sens d'un programme5
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
)ert M 3ri&ier la 3alidit du code 2e code assem!leur #ui3alent au code source 2e type de ses e*pressions
=*cuta!le langage B
Cours compilation 2011-2012
.9 D. Barthou
7- %nal&se smanti(ue
Ce (ue fait l'anal&se smanti(ue:
3oid &$int *, int y% S dou!le X K '.2Y * K X E t ? Ghello L GY i& $y LK 0% y K &$0,1%Y y K y E *Y Z* K ZyY return yY T
Ori&ier les types, les dclarations des 3aria!les 2es oprations lgales Ori&ier #ue le programme s'arrNte Jue les calculs sont corrects ...
.+ D. Barthou
7- %nal&se smanti(ue
a% D&inition des attri!uts, grammaires attri!ues !% =3aluation des attri!uts, ordres d'3aluation c% Application1 Ori&ication du type des e*pressions
.> D. Barthou
40 D. Barthou
41 D. Barthou
E emple: 1= : $=<7
%ttributs s&nthtiss:
Attri!uts des le*"mes 2es attri!uts de A dans une r"gle A 0 u 3alus par cette r"gle
2es attri!uts de A dans une r"gle B 0 uA3 3alus par cette r"gle 2es attri!uts dpendent alors de ceu* de B etPou de ceu* des sym!oles de u,3.
4. D. Barthou
Dans ar!re synta*i#ue, cha#ue 3aria!le1 un noeud dcor a3ec ses attri!uts Dpendances entre attri!uts1
Bn attri!ut a de M ne peut Ntre 3alu #ue si la 3aleur de l'attri!ut ! de I est connue M.a 0 I.! )ur un ar!re synta*i#ue particulier, l'ens. des dpendances donne le #raphe des dpendances <l &aut #ue le graphe de dpendance soit un DA: L D&init des parcours de l'ar!re synta*i#ue permettant e3al.
44 D. Barthou
int toto > tata> titi? @uel est le #raphe de dpendance entre attributs A @uel ordre de parcours est /alide A
Dynami#uement1
Ori&ier a!sence de circuit pour cha#ue ar!re synta*i#ue =rreur sinon $msg peut comprhensi!le% Attri!uts synthtiss1 #rammaire S-attribue Dpendent des attri!uts des sym!oles plus M gauche dans la r"gle de grammaire, ou synthtiss1 #rammaire '-attribue
)tati#uement1
A 0 B C D 1 attri!uts de
4+ D. Barthou
as de circuit dans le graphe de dpendances 2es 3aleurs des attri!uts peu3ent Ntre places sur la pile $admis%
4> D. Barthou
Construit e*plicitement par analyse guide par la synta*e Attri!uts synthtiss1 les noeuds de l'ar!re. ermet de ne garder #ue les noeuds signi&icati&s pour l'analyse smanti#ue $supprime les le*"mes de ponctuation% ermet de constrainte pour les parcours de l'ar!re, pas li M l'analyse synta*i#ue Icessite 2 passesPparcourts $une pour construire l'ar!re, une pour &aire l'analyse% ,0
D. Barthou
%/anta#e de l'%S+:
Incon/nients de l'%S+:
Bn ensem!le de 3aleurs Bn ensem!le d'oprateurs sur ces 3aleurs )tati#ue1 3ri&ie M la compilation #ue toutes les oprations sont compati!les a3ec les types, ne pas laisser de doutes M l'e*cution Dynami#ue1 3ri&ie M l'e*cution la 3alidit des oprations. lus prcis #ue l'analyse stati#ue, sou3ent moins e&&icace.
,1 D. Barthou
(ype Oaleur $si constante% ;egistre ou elle sera stoc8e, ou adresse mmoire
Bne ta!le des sym!oles par &onction $plus gnralement, par portePscope% eut Ntre utilise par toutes les tapes d'un compilateur
,2 D. Barthou
,' D. Barthou
=*cuta!le langage A
Analyse lexicale Analyse syntaxique Analyse smantique Gnration de representation intermdiaire (RI) Optimisation de RI Gnration de code Optimisation
Code indpendant du hardVare $!ac8end% Code pas optimis $&ait par !ac8end%
=*cuta!le langage B
,. D. Barthou
B- !nration de .I
3our(uoi une .I A
)egmente le tra3ail du compilateur ;end possi!le le d3eloppement des &ront ends indpendamment des !ac8ends $et in3ersement%
:cc a de nom!reu* &ront-ends et !ac8-ends Iecessaire par&ois d'a3oir plusieurs ;<, en &onction de ce #u'on 3eut optimiser
,4 D. Barthou
B- !nration de .I
%rchitecture de #cc
[istori#uement, ;(2 tres proche du code machine 6a3a !ytecode erl4, Cpython !ytecode 22OM <; Cuda et (7 $!ase /pen,. compiler pour le &rontend%
)ource
%utres .I
Binaire
Cours compilation 2011-2012
,, D. Barthou
B- !nration de .I
3lan
a% =ncodage des 3aria!les !% /u stoc8e-t-on ces donnes 5 c% =ncodage des &onctions, appels de &onction
,9 D. Barthou
our char, short, int, dou!le, &loat, char, A1 manipuls directement par l'architecture
our les pointeurs1 manipuls directement par l'architecture $des adresses%, gnralement sur ,. !its ou '2 !its.
,+ D. Barthou
B-a +ableau 1D
2es lments sont rangs M la suite les uns des autres $en C%
,> D. Barthou
91 D. Barthou
92 D. Barthou
B-a Structures
our les structures 0 une structure est un ta!leau int a; char c; float d;
struct {
}; o&&set 0
a
.
c
4
d
9' D. Barthou
2es donnes glo!ales1 gr par compilateur 2a pile1 gre par compilateur 2e tas1 inter&ace de programmation propose par /)
9. D. Barthou
2'allocation stati#ue s'occupe des donnes de taille &i*e dans le programme 0 le compilateur doit connaitre la taille de ces donnes
Compilateur calcule la taille des 3aria!les localesPglo!ales, alloue l'espace pour ces 3aria!les
Oars glo!ales1 adresse mmoire stati#ue Oar locale1 sur la pile, dplacement par rapport sommet
94 D. Barthou
=*emple1 3aria!les dclares localement dans des !locs { int a; { int b, x, c[3]; } { int x[4]; int y; } }
9, D. Barthou
2e compilateur ins"re des appels au* &onctions syst"me pour o!tenir la place ncessaire 0 &ragmentation possi!le 0 ncessaire de li!rer la mmoire non utilise1
eut etre ncessaire M dtecter M la compilation Btilisation d'un ramasse miettes1 li!"re la mmoire #ui n'a plus de pointeur la dsignant.
99 D. Barthou
ro!l"mes du ramasse-miettes1 Juand l'appeler 5 Comment dtecter les Xones Xom!ies 5 Jui s'occupe de la &ragmentation 5
B-c Gonctions
Doi3ent Ntre gres e&&icacements ''appel d'une fonction:
@ournir un conte*te d'e*cution $3ars glo!ales, autres &onctions, ...% asser des param"tres (rans&rer le &lot de contr_le @ournir une 3aleur de retour
9+ D. Barthou
9> D. Barthou
)i la dure d'utilisation de la Xone d'acti3ation $`A% correspond M la dure de l'appel, et &onction retourne normalement1 0 Sur la pile 4cas le plus courant5 )i dure d'utilisation de la `A au delM d'un appel, ou &onction retourne une adresse #ui re&rence son tat d'e*cution 0 )ur le tas, allocation dynami#ue $c& co-routine% )i pas d'appels en cascade, pas de rcursi3it 0 )tati#ue
+0 D. Barthou
2es &onctions appeles ne sont pas tou-ours connues $appels syst"mes, &onctions d&inies dans d'autres &ichiers .c, !i!lioth"#ues% 2es compilateurs utiliss pour compiler di&&rents codes peu3ent Ntre di&&rents D&init #ui &ait #uoi entre l'appelant et l'appel (outes les &onctions sui3ent la mNme s#uence standardise artage des responsa!ilits entre l'appelant et l'appel
+1 D. Barthou
3rotocole d'appel:
Appelant
pr#appel post#appel
Appel
prolo$ue
r-appel1 &ait par l'appelant rologue1 &ait par l'appel =pilogue1 &ait par l'appel ost-appel1 &ait par l'appelant
pilo$ue
+2 D. Barthou
@rame pointer
pile
Grame pointer:
)au3egarde des registres de l'appelant dans sa `A, pou3ant Ntre rcrits par l'appel <nitialise la `A de l'appel
%aram&tres 'rame pointer (ars) locales *au+e$arde des re$istres %aram&tre n ))) %aram&tre 1 Adresse de retour 'rame pointer @rame pointer +. D. Barthou
pile
)au3egarde de registres 3entuellement dont il est responsa!le AllouePinitialise les 3aria!les locales pile
%aram&tres 'rame pointer (ars) locales *au+e$arde des re$istres %aram&tre n ))) %aram&tre 1 Adresse de retour 'rame pointer *au+e$arde de re$istres (ars) ,ocales - l.appel @rame pointer +4 D. Barthou
%aram&tres 'rame pointer (ars) locales *au+e$arde des re$istres %aram&tre n ))) %aram&tre 1 Adresse de retour 'rame pointer @rame pointer
;estore les registres, la pile comme elle tait a3ant prologue ;estore le conte*te d'e*cution de l'appelant $&rame pointer% ;eprend l'e*cution de l'appelant $adresse de retour%
pile
+, D. Barthou
+9 D. Barthou
assage par adresse1 on donne l'adresse de la 3aria!le M la &onction. 2a &onction peut modi&ier la 3aria!le assage par 3aleur1 on donne la 3aleur de la 3aria!le M la &onction. 2a &onction peut modi&ier la 3aria!le
6a3a, python, ru!y, perl,lua ... ython, Ca, D, =i&&el, ... 0 co-routines et clotures ont !esoin de `A alloues sur le tas etPou d'autres ;&rences #ue la 3aleur de retour $plusieurs `A acti3es%
Cours compilation 2011-2012
+> D. Barthou
B- !nration de .I
3lan
a% =ncodage des 3aria!les !% /u stoc8e-t-on ces donnes 5 c% =ncodage des &onctions, appels de &onction
>0 D. Barthou
A)(
Cours compilation 2011-2012
DA:
>1 D. Barthou
Bn graphe de &lot de contr_le $control &loV graph, C@:%1 reprsente la &a\on dont le programme enchaine les !locs d'instructions
>2 D. Barthou
2es noeuds1 des !locs de !ase. Bn !loc de !ase est une s#uence d'instruction dans la#uelle aucun !ranchement n'a lieu, et s'il y a des !ranchements 3ers des instructions de ce !loc, c'est sur la premi"re instruction. 2es arcs1 2 !locs sont relis par un arc si le contr_le peut passer d'un !loc M l'autre.
>' D. Barthou
:raphe de dpendances1 reprsente le &lot des !aleurs, des instructions #ui les d&inissent au* instructions #ui les utilisent. 2 . -1 -1 1
'
Arcs a3ec -11 criture sur une <tration, lecture sur la sui3ante
4 9
-1
>. D. Barthou
:raphe de dpendance
lusieurs arcs possi!les1 criture 0 lecture, lecture 0 criture, criture 0 criture Ce graphe d&init un ordre partiel en instructions (oute trans&ormation de l'ordre d'e*cution des instructions #ui prser3e les dpendances prser3e la smanti#ue 0 tr"s utilis par les compilateurs optimisant le code.
>4 D. Barthou
pasPpeu de registres, toutes les 3aleurs intermdiaires passent sur la pile 6eu d'instruction asm pour pile sur de nom!reuses machines, !ytecode -a3a Iom!re in&ini de registres $comme des temporaires% Bytecode perl, 22OM, ...
>, D. Barthou
"xemple$ :rammaire1 =0=?= F=E= Fn Machine M pile utilisant1 push n, add, mul
:nrer les codes des sous ar!res 2es 3aleurs M utiliser sont sur la pile :nrer le code utilisant la pile pour le noeud courant.
>9 D. Barthou
Autorise les instructions du type * K * op y =*1 Code <ntel *+, Bn triplet $op,*,y% Bn couple $op, astmt% a3ec astmt le numro de l'instruction produisant la 3aleur
Autorise les instructions du type * K y op X =*1 code <ntel <tanium #uadruplet $op, *,y,X,% triplet1 $op, astmt1, astmt2% a3ec astmt le numro de l'instruction produisant la 3aleur
Cha#ue instruction1
Cha#ue instruction1
>+ D. Barthou
Instructions - adresses:
<& $7KKW% goto 2a!el1 saute au la!el si 7 est egal M W $autres conditions possi!les% 7 K W op ` 7 K op W
2es !oucles $&or, Vhile% sont toutes traduites a3ec des i&..goto. 2es instructions utilisent des la!els. "xemple
Cours compilation 2011-2012
>> D. Barthou
Com!ien en &aut-il pour calculer une e*pression !inaire #uelcon#ue 5 Btile pour minimiser le nom!re de pseudo registres dans le code
)urtout utile pour gnration de 3rai code machine =n gnral, ne pas hsiter M consommer !eaucoup de pseudos registres $optimisation ensuite plus simple%
100 D. Barthou
Com!ine graphe de &lot de contr_le et de dpendance (r"s utilis dans compilateurs actuels 2a reprsentation ))A1
Cha#ue nom de 3aria!le n'est d&ini #u'en un endroit Cha#ue utilisation r&"re M un endroit $une instruction%
Ces &onctions ne ser3ent #ue pour la ;< Aucun code n'est gnr $on met des copies si ncessaire%
101 D. Barthou
+ransformation en SS%
102 D. Barthou
+ransformation du #raphe
10' D. Barthou
/n cherche dans la ta!le courante. )i pas trou3, on cherche dans la ta!le du !loc englo!ant. (a!le des 3ars. glo!ales en dernier
10. D. Barthou
104 D. Barthou
nou/elletabledess&mboles$%, liberetabledess&mboles$ta!le% ajoute$ta!le,identi&icateur% nou/elle/ar$ta!le,type% cherche$ta!le,nom% ta!le.sui3 K la ta!le de la porte englo!ante ta!le.tailleK la taille en octets des 3ars dans la ta!le
10, D. Barthou
liberetabledess&mboles$t%Y
109 D. Barthou
10+ D. Barthou
10> D. Barthou
110 D. Barthou
111 D. Barthou
112 D. Barthou
Idem pour une affectation 4id est crit au lieu d'tre lu5
Cours compilation 2011-2012
11. D. Barthou
114 D. Barthou
11, D. Barthou
11+ D. Barthou
11> D. Barthou
B- .sum #nration de .I
:raphes $control &loV graph, dependence graph, A)(% )ous &orme d'instructions $code 2P' adresses, code a pile, ))A%
2e code est gnr $sous &orme de te*te ou de structures% et non e*cut 2a ta!le des sym!oles -oue un r_le central
Ori&ication des types, des dclarations, taille des 3aria!les, gestion des portes
)ur la pile1 possi!le, tr"s lourd, comme une machine a pile Dans les registres 0 mais en nom!re insu&&isant en gnral
122 D. Barthou
Bne 3ar K un registre Juand plus de registre disponi!le, on sau3egarde registres sur la pile pour les li!rer =*emple a3ec . registres
12' D. Barthou
r1 ?K r2Y r' K 4Y r. ?K r'Y empile r'Y empile r.Y r' K ,Y r. EK r'Y dpile r'Y r' ?K r.Y r1 ?K r'Y
Bne 3ar K un registre ro!l"me1 #ui empilerPdpiler 5 Juand 5 r' est empil et pas dpil...
12. D. Barthou
Calculer la dure de 3ie de cha#ue 3aria!le 2es 3aria!les 3i3antes simultanment doi3ent Ntre dans des registres di&&rents
124 D. Barthou
Bn noeud par 3aria!le Bn arc1 les deu* 3aria!les sont 3i3antes simultanment 2 noeuds relis doi3ent a3oir un registre di&&rent.
(1 (' (.
(4 (9
Contrainte:
;egistre K couleur 0 probleme de coloria#e de #raphe [euristi#ue de coloriage dans les compilateurs.
Cours compilation 2011-2012
12, D. Barthou
Donner les couleurs en parcourant les noeuds, ordonns par arit $de la plus grande M la plus petite% (1 ?K (2Y ;1 ?K (2Y (' K 4Y (. ?K ('Y (4 K ,Y (9 EK (4Y (. ?K (9Y (1 ?K (.Y ;2 K 4Y ;2 ?K ;2Y ;' K ,Y ;' EK ;'Y ;2 ?K ;'Y ;1 ?K ;2Y
+1 (' (.
(4 (9
129 D. Barthou
)au3egarder la 3aleur du registre en mmoire. r3oir une case mmoire par 3aria!le. )'appelle le Gregister spillH Juand on a !esoin de cette 3aleur, on la charge de la mmoire. )'appelle le Gregister
Compter les occurences de cha#ue 3aria!le, classer les 3ars par nom!re d'occurences dcroissantes )i n registres, on &i*e 8en registres pour stoc8er #uel#ues 3ars. $et n-8 reg. pour les calculs intermdiaires%. 2es 8 premi"res 3aria!les sont dans des registres, les autres en mmoire. une 3aria!le peut etre tres utilise au d!ut du code, plus du tout apres.
1'0 D. Barthou
Incon/nient1
2'ordonnancement d'instruction $instruction scheduling% pour l'optimisation du temps d'e*cution est un p! I -complet rend du temps, attend la mmoire Dpend de l'instruction prcdente Mais celles ci peu3ent Ntre e*cute immdiatement
1'1 D. Barthou
* K EpY y K * ? 1Y X K a ?2 Y ! K c P 'Y
Dpendances1
Dpendances
=n prati#ue, tr"s di&&icile M dterminer. =&&ort de recherche considra!le $alias analysis, pointer analysis%
Dpendance entre les deu* instructions 55 * K EpY E# K 1Y
1'2 D. Barthou
Contraintes architecturales
Iom!re de cycles pour &inir une instruction Iom!re de pipelines pour un type d'instruction ...
1'' D. Barthou
=*1 architecture superscalaire, 2 pipeline entier, 1 mmoire, 1 &lottant1 au mieu*, 2 instructions entieres, 1 acc"s mmoire et 1 opration &lottante P cycle
1'. D. Barthou
)ou3ent, restriction sur le pipeline d'une unit &onctionnelle =*1 pour un pipeline @ B, une nou3elle operation tous les 2 cycles
1'4 D. Barthou
A3ec priorits1 lors#u'une instruction 3a sur un pipeline pas encore prNt, diminue sa priorit. 2ors#u'une instruction dpend d'une instruction #ui n'est pas encore &inie, diminue sa priorit
Modulo scheduling1 classe d'algorithmes pour l'ordonnancement d'instruction sur les !oucles $une !oucle interne%
rincipe1 &aire du pipeline logiciel, entrelacer les instructions d'une itration a3ec celles d'autres itrations
1', D. Barthou
(race scheduling1 optimiser l'ordonnancement pour un chemin d'e*cution $le plus sou3ent pris%
(raduire en assem!leur $choi* des instructions% Assem!lage1 mnemoni#ues assem!leurs 0 !inaire 2e compilateur ne sait pas M #uelle adresse le code sera plac en mmoire 2e compilateur ne connait pas l'adresse des o!-ets e*ternes $&ichiers compils sparemment, !i!lioth"#ues%. ar e*, ob est la &onction print& 55
1'9 D. Barthou
Derniers probl)mes:
2e compilateur ne sait pas M #uelle adresse le code sera plac en mmoire 2e compilateur ne connait pas l'adresse des o!-ets e*ternes $&ichiers compils sparemment, !i!lioth"#ues%. ar e*, ob est la &onction print& 55 0 met l'adresse M 0 2e lin8er $editeur de lien% &ait la derniere passe sur le code o!-et $les .o en C%
1'+ D. Barthou
)egments, cha#ue segment contient un type distinct d'in&ormation. )egment Gte*tH contient le code par e*emple. Autres segments pour le de!ug, des donnes, A our cha#ue segment, le &ichier o!-et d&init la taille et la position actuelle en mmoire Bne ta!le des sym!oles1 liste les 3ars et &onctions d&inies dans l'o!-et, et leur position $permet de les trou3er si utilises dans un autre .o% Bne liste de GrelocationH1 in&ormation sur les adresses utilises par le &ichier o!-et mais #ui ne sont pas connues au moment de la compilation
1'> D. Barthou
Adresses et taille des 3aleurs de3ant Ntre modi&ies $e*1 adresse du print&% )ym!ole pour la relocation $print& par e*emple%
1.0 D. Barthou
2it les tailles des segments, calcule la taille &inale et la disposition de cha#ue segment. 2it tous les sym!oles et construit la ta!le glo!ale des sym!oles 2it les segments et optimise le code glo!al $analyse interprocdurale% 2it les segments et la ta!le de relocation, met a -our les adresses et crit le nou3eau &ichier 2'adresse d'une &onction dans une telle !i! n'est connue #ue lors#u'elle est charge 0 premier appel1 appelle le chargeur de !i! et modi&ie l'adresse pour les &uturs appels $&ormat =2@% 1.1
D. Barthou
Conclusion
Descriptif des principales phases d'un compilateur
Analyse le*icale, synta*i#ue, smanti#ue, optimisation et gnration de code $;< et code rel% 2angages pour le paralllisme /ptimisations pour le paralllisme, mieu* grer le hardVare $caches, A%
1.2 D. Barthou
@uel(ues rfrences
Sur les automates> #rammaires
<ntroduction to the theory o& computation, )ipser, <( <ntroduction to automata theory, languages and computation, [opcro&t, Bllman, Addison Vesley
Compilateurs, principes, techni#ues et outils, Aho, )ethi, Bllman, intereditions Modern Compiler Design, :rune, Bal, A, Ciley /ptimiXing Compilers &or Modern Architectures, Allen, Dennedy, MorganDau&mann Ad3anced Compiler Design Z <mplementation, Muchnic8, MorganDau&mann 2e cours1 http1PPuuu.enseir!-matmeca.&rPfd!arthouP
1.' D. Barthou