19 septembre 2007cours de compilation 1 - intranet1 marc gengler [email protected] cours...

135
19 septembre 2007 Cours de compilation 1 - Intranet 1 Marc Gengler Marc Gengler [email protected] [email protected] Cours de compilation Cours de compilation 18h de cours 18h de cours avec un peu de avec un peu de TD TD un projet de un projet de 32h 32h . . . et un . . . et un examen examen

Upload: renart-flament

Post on 03-Apr-2015

124 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 1

Marc GenglerMarc Gengler

[email protected]@esil.univmed.fr

Cours de compilationCours de compilation

18h de cours18h de coursavec un peu de avec un peu de

TDTDun projet de 32hun projet de 32h

. . . et un . . . et un examenexamen

Page 2: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 2

Marc GenglerMarc Gengler

[email protected]@esil.univ-mrs.fr

Cours de compilationCours de compilation

18h de cours18h de coursavec un peu de avec un peu de

TDTDun projet de 32hun projet de 32h

. . . et un . . . et un examenexamen

Page 3: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 3

Les grandes lignes du coursLes grandes lignes du cours

•Définitions de baseDéfinitions de base•Composition de compilateursComposition de compilateurs•L’environnement d’un compilateurL’environnement d’un compilateur•Evaluation partielle et compilationEvaluation partielle et compilation•Analyses lexicales et syntaxiquesAnalyses lexicales et syntaxiques•Techniques d’analyse descendantesTechniques d’analyse descendantes•Techniques d’analyse ascendantesTechniques d’analyse ascendantes•YACCYACC•Analyse sémantiqueAnalyse sémantique•Environnement d’exécutionEnvironnement d’exécution•Génération de codeGénération de code•Optimisation de codeOptimisation de code

Page 4: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 4

BibliographieBibliographie

•Tout ce qui contientTout ce qui contient– compilation, compilateur, compiler.compilation, compilateur, compiler.

•InternetInternet– souvent, c’est trop simplifié ou trop dense,souvent, c’est trop simplifié ou trop dense,

– et pas toujours correct.et pas toujours correct.

•Mes choixMes choix– Principles of Compiler Design, Aho & Ullman.Principles of Compiler Design, Aho & Ullman.

« The green dragon book » (1977)« The green dragon book » (1977)

– Compilers: Principles, Techniques, and Tools,Compilers: Principles, Techniques, and Tools,

Aho, Sethi & Ullman.Aho, Sethi & Ullman.

« The red dragon book » (1986)« The red dragon book » (1986)

– Lex & Yacc, Levine.Lex & Yacc, Levine.

Page 5: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 5

Les grandes lignes du coursLes grandes lignes du cours

•Définitions de baseDéfinitions de base•Composition de compilateursComposition de compilateurs•L’environnement d’un compilateurL’environnement d’un compilateur•Evaluation partielle et compilationEvaluation partielle et compilation•Analyses lexicales et syntaxiquesAnalyses lexicales et syntaxiques•Techniques d’analyse descendantes etTechniques d’analyse descendantes et ascendantesascendantes•YACCYACC•Analyse sémantiqueAnalyse sémantique•Environnement d’exécutionEnvironnement d’exécution•Génération de codeGénération de code•Optimisation de codeOptimisation de code

Page 6: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 6

I N T R O D U C T I O NI N T R O D U C T I O N

Page 7: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 7

Définition de baseDéfinition de base----------------------------------------------------------------------------------------------------------------------------

----• Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR

d’un « texte » écrit en langage source Ld’un « texte » écrit en langage source L

vers le « même texte » écrit en langage vers le « même texte » écrit en langage cible C.cible C.

Page 8: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 8

Définition de baseDéfinition de base----------------------------------------------------------------------------------------------------------------------------

----• Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR

d’un « texte » écrit en langage source Ld’un « texte » écrit en langage source L

vers le « même texte » écrit en langage vers le « même texte » écrit en langage cible C.cible C.

CompilateurCompilateurCC ASMASM

Page 9: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 9

Définition de baseDéfinition de base----------------------------------------------------------------------------------------------------------------------------

----• Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR

d’un « texte » écrit en langage source Ld’un « texte » écrit en langage source L

vers le « même texte » écrit en langage vers le « même texte » écrit en langage cible C.cible C.

CompilateurCompilateurCC ASMASM

void main ()void main () {int x;{int x; if …if …

load A , #13load A , #13add A , B , Cadd A , B , C……

Page 10: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 10

Définition de baseDéfinition de base----------------------------------------------------------------------------------------------------------------------------

----• Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR

d’un « texte » écrit en langage source Ld’un « texte » écrit en langage source L

vers le « même texte » écrit en langage vers le « même texte » écrit en langage cible C.cible C.

CompilateurCompilateurCC ASMASM

CompilateurCompilateur ’’PascalPascal CC

Page 11: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 11

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– lit tout le texte source,lit tout le texte source,

Page 12: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 12

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– lit tout le texte source,lit tout le texte source,– le comprend (vérifie)le comprend (vérifie)

Page 13: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 13

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– lit tout le texte source,lit tout le texte source,– le comprend (vérifie)le comprend (vérifie)– et le traduit en un texte équivalent.et le traduit en un texte équivalent.

Page 14: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 14

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– lit tout le texte source,lit tout le texte source,– le comprend (vérifie)le comprend (vérifie)– et le traduit en un texte équivalent.et le traduit en un texte équivalent.

Il n’exécute pas le programme !Il n’exécute pas le programme !

Page 15: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 15

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un interprèteUn interprète

– lit une instruction source,lit une instruction source,

Page 16: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 16

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un interprèteUn interprète

– lit une instruction source,lit une instruction source,– la comprend (vérifie),la comprend (vérifie),

Page 17: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 17

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un interprèteUn interprète

– lit une instruction source,lit une instruction source,– la comprend (vérifie),la comprend (vérifie),– l’exécutel’exécute

Page 18: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 18

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un interprèteUn interprète

– lit une instruction source,lit une instruction source,– la comprend (vérifie),la comprend (vérifie),– l’exécutel’exécute– et passe à l’instruction suivante.et passe à l’instruction suivante.

Page 19: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 19

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un interprèteUn interprète

– lit une instruction source,lit une instruction source,– la comprend (vérifie),la comprend (vérifie),– l’exécutel’exécute– et passe à l’instruction suivante.et passe à l’instruction suivante.

Il exécute le programme !Il exécute le programme !

Page 20: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 20

Compilation >< InterprétationCompilation >< Interprétation----------------------------------------------------------------------------------------------------------------------------

----

• Un interprèteUn interprète

– lit une instruction source,lit une instruction source,– la comprend (vérifie),la comprend (vérifie),– l’exécutel’exécute– et passe à l’instruction suivante.et passe à l’instruction suivante.

Il exécute le programme !Il exécute le programme !

Un processeur est un interprète de son byte-code !Un processeur est un interprète de son byte-code !

Page 21: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 21

C H A I N A G EC H A I N A G E

D ED E

C O M P I L A T E U R SC O M P I L A T E U R S

Page 22: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 22

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1

Page 23: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 23

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

Page 24: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 24

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

Ils peuvent être vus comme un seul compilateur !Ils peuvent être vus comme un seul compilateur !

Page 25: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 25

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

En termes de langages :En termes de langages :

C1C1 C2C2SourceSource CibleCibleIntermédiaireIntermédiaire

Page 26: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 26

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

En termes de langages :En termes de langages :

C1C1 C2C2SourceSource CibleCibleIntermédiaireIntermédiaire

Fréquent dans la pratique :Fréquent dans la pratique :

C1C1 C2C2SourceSource ASM optimiséASM optimiséASMASMcorrectcorrect

Page 27: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 27

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

Nous pouvons partager un FRONT-END :Nous pouvons partager un FRONT-END :

C1C1

C2C2

SourceSource

ASM X86ASM X86

ASM virtuelASM virtuel

C3C3 ASM MipsASM Mips

Page 28: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 28

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

Nous pouvons partager un BACK-END :Nous pouvons partager un BACK-END :

C3C3

C1C1

ASMASM

PascalPascal

IntermédiaireIntermédiaire

C2C2ModulaModula

Page 29: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 29

Chaînage de compilateursChaînage de compilateurs----------------------------------------------------------------------------------------------------------------------------

----

C1C1 C2C2

Et nous combinons (gcc et g++ par exemple) :Et nous combinons (gcc et g++ par exemple) :

C1C1CC

IntermédiaireIntermédiaire

C++C++

C3C3 ASM X86ASM X86

C4C4 ASM MipsASM MipsC2C2

Page 30: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 30

L E SL E S

L A N G A G E SL A N G A G E S

D A N S U ND A N S U N

C O M P I L A T E U RC O M P I L A T E U R

Page 31: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 31

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– traduit du langage S vers le langage C,traduit du langage S vers le langage C,

– est lui-même écrit en un langage I.est lui-même écrit en un langage I.

Page 32: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 32

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– traduit du langage S vers le langage C,traduit du langage S vers le langage C,

– est lui-même écrit en un langage I.est lui-même écrit en un langage I.

CompCompS S --> C> C

II

Page 33: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 33

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Un compilateurUn compilateur

– traduit du langage S vers le langage C,traduit du langage S vers le langage C,

– est lui-même écrit en un langage I.est lui-même écrit en un langage I.

CompComp

ou encore, par le « diagramme en T » :ou encore, par le « diagramme en T » :

S CS C

S S --> C> C

II

IIS CS C

II

Page 34: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 34

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Appelons une « M-machine » ou « M-Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète » une machine dont le processeur interprète M !interprète M !

Page 35: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 35

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Appelons une « M-machine » ou « M-Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète » une machine dont le processeur interprète M !interprète M !

• Un compilateur de L , autonome sur la M-Un compilateur de L , autonome sur la M-machine, est :machine, est :

L ML M

MM

Page 36: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 36

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Appelons une « M-machine » ou « M-Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète » une machine dont le processeur interprète M !interprète M !

• Un compilateur de L , autonome sur la M-Un compilateur de L , autonome sur la M-machine, est :machine, est :

L ML M

MM

SourceSourceLL

Page 37: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 37

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Appelons une « M-machine » ou « M-Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète » une machine dont le processeur interprète M !interprète M !

• Un compilateur de L , autonome sur la M-Un compilateur de L , autonome sur la M-machine, est :machine, est :

L ML M

MM

SourceSourceLL CibleCible

MM

Page 38: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 38

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----

• Appelons une « M-machine » ou « M-Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète » une machine dont le processeur interprète M !interprète M !

• Un compilateur de L , autonome sur la M-Un compilateur de L , autonome sur la M-machine, est :machine, est :

L ML M

MM

SourceSourceLL CibleCible

MM

M-machineM-machineLe supportLe supportd’exécutiond’exécution

M-machineM-machine

Page 39: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 39

Un compilateur et sa réalisationUn compilateur et sa réalisation----------------------------------------------------------------------------------------------------------------------------

----• Appelons une « M-machine » ou « M-interprète » une Appelons une « M-machine » ou « M-interprète » une

machine dont le processeur interprète M !machine dont le processeur interprète M !

• Un compilateur de L , autonome sur la M-machine, est :Un compilateur de L , autonome sur la M-machine, est :

• La compilation et l’exécution du code compilé peuvent La compilation et l’exécution du code compilé peuvent se faire sur la M-machine ! ! !se faire sur la M-machine ! ! !

L ML M

MM

SourceSourceLL CibleCible

MM

M-machineM-machineLe supportLe supportd’exécutiond’exécution

M-machineM-machine

Page 40: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 40

G E N E R A T I O NG E N E R A T I O N

D ED E

N O U V E A U XN O U V E A U X

C O M P I L A T E U R SC O M P I L A T E U R S

Page 41: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 41

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous disposons d’un compilateur de L , autonome Nous disposons d’un compilateur de L , autonome

sur M !sur M !L ML M

MM

Page 42: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 42

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous disposons d’un compilateur de L , autonome Nous disposons d’un compilateur de L , autonome

sur M !sur M !

• Nous voulons un compilateur de Nous voulons un compilateur de XX , autonome sur M , autonome sur M !!

L ML M

MM

XX M M

MM

Page 43: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 43

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous disposons d’un compilateur de L , autonome sur Nous disposons d’un compilateur de L , autonome sur

M !M !

• Nous voulons un compilateur de Nous voulons un compilateur de XX , autonome sur M ! , autonome sur M !

• Nous voulons un compilateur de L , autonome sur Nous voulons un compilateur de L , autonome sur NN ! !

L ML M

MM

XX M M

MM

L L NN

NN

Page 44: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 44

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous disposons d’un compilateur de L , autonome sur Nous disposons d’un compilateur de L , autonome sur

M !M !

• Nous voulons un compilateur de Nous voulons un compilateur de XX , autonome sur M ! , autonome sur M !

• Nous voulons un compilateur de L , autonome sur Nous voulons un compilateur de L , autonome sur NN ! !

L ML M

MM

XX M M

MM

L L NN

NN

Page 45: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 45

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

Page 46: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 46

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

Page 47: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 47

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

• Indiquons l’inefficacité par * ! ! !Indiquons l’inefficacité par * ! ! !

Page 48: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 48

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

• Indiquons l’inefficacité par * ! ! !Indiquons l’inefficacité par * ! ! !

L M*L M*MM

Ce compilateur est rapide, mais le code produit n’est pas bon !Ce compilateur est rapide, mais le code produit n’est pas bon !

Page 49: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 49

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

• Indiquons l’inefficacité par * ! ! !Indiquons l’inefficacité par * ! ! !

L M*L M*MM

L ML MM*M*

L M*L M*M*M*

L ML MMM

Page 50: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 50

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

• Indiquons l’inefficacité par * ! ! !Indiquons l’inefficacité par * ! ! !

L M*L M*MM

L ML MM*M*

L M*L M*M*M*

L ML MMM

Il est lent, mais produit un bon résultat !Il est lent, mais produit un bon résultat !

Page 51: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 51

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

• Indiquons l’inefficacité par * ! ! !Indiquons l’inefficacité par * ! ! !

L M*L M*MM

L ML MM*M*

L M*L M*M*M*

L ML MMM

Il est lent et mauvais !Il est lent et mauvais !

Page 52: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 52

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Un bon compilateur travaille Un bon compilateur travaille vitevite et et bienbien ! !

– La compilation est rapide !La compilation est rapide !

– Le code compilé est rapide, efficace en Le code compilé est rapide, efficace en mémoire, . . . !mémoire, . . . !

• Indiquons l’inefficacité par * ! ! !Indiquons l’inefficacité par * ! ! !

L M*L M*MM

L ML MM*M*

L M*L M*M*M*

L ML MMM

Il est bon !Il est bon !

Page 53: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 53

C H A N G E RC H A N G E R

D ED E

L A N G A G EL A N G A G E

Page 54: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 54

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Sur la M-machine, construisons un bon Sur la M-machine, construisons un bon

compilateur pour le nouveau langage X !compilateur pour le nouveau langage X !

Page 55: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 55

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Sur la M-machine, construisons un bon Sur la M-machine, construisons un bon

compilateur pour le nouveau langage X !compilateur pour le nouveau langage X !

• Ecrire directement est très Ecrire directement est très difficile !difficile !

X X M M

MM

Page 56: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 56

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Sur la M-machine, construisons un bon Sur la M-machine, construisons un bon

compilateur pour le nouveau langage X !compilateur pour le nouveau langage X !

• Ecrire directement est très Ecrire directement est très difficile !difficile !

– Faire une bonne traduction de X vers M est Faire une bonne traduction de X vers M est difficile !difficile !

– La réaliser de surcroît en M ne facilite rien ! ! !La réaliser de surcroît en M ne facilite rien ! ! !

X X M M

MM

Page 57: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 57

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Sur la M-machine, construisons un bon Sur la M-machine, construisons un bon

compilateur pour le nouveau langage X !compilateur pour le nouveau langage X !

• Ecrire directement est très Ecrire directement est très difficile !difficile !

– Faire une bonne traduction de X vers M est Faire une bonne traduction de X vers M est difficile !difficile !

– La réaliser de surcroît en M ne facilite rien ! ! !La réaliser de surcroît en M ne facilite rien ! ! !

X X M M

MM

Page 58: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 58

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous allons devoir combiner des Nous allons devoir combiner des

compilateurs !compilateurs !

Page 59: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 59

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous allons devoir combiner des Nous allons devoir combiner des

compilateurs !compilateurs !

• Ecrire est très facile !Ecrire est très facile !X X L L

LL

Page 60: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 60

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous allons devoir combiner des Nous allons devoir combiner des

compilateurs !compilateurs !

• Ecrire est très facile !Ecrire est très facile !

– La traduction entre les langages évolués X et L La traduction entre les langages évolués X et L est très facile.est très facile.

– La réaliser de surcroît en L rend la chose La réaliser de surcroît en L rend la chose aisée ! ! !aisée ! ! !

X X L L

LL

Page 61: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 61

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous allons devoir combiner des Nous allons devoir combiner des

compilateurs !compilateurs !

• Ecrire est très facile !Ecrire est très facile !

– La traduction entre les langages évolués X et L La traduction entre les langages évolués X et L est très facile.est très facile.

– La réaliser de surcroît en L rend la chose La réaliser de surcroît en L rend la chose aisée ! ! !aisée ! ! !

X X L L

LL

Page 62: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 62

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• D’abord nous compilons le nouveau compilateur D’abord nous compilons le nouveau compilateur

!!

Page 63: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 63

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• D’abord nous compilons le nouveau compilateur D’abord nous compilons le nouveau compilateur

!!

L ML M

MM

M-machineM-machine

Page 64: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 64

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• D’abord nous compilons le nouveau compilateur D’abord nous compilons le nouveau compilateur

!!

L ML M

MM

M-machineM-machine

X LX LLL

Page 65: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 65

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• D’abord nous compilons le nouveau compilateur D’abord nous compilons le nouveau compilateur

!!

L ML M

MM

M-machineM-machine

X LX LLL

X LX LMM

Nous gardons un compilateur de X vers L !Nous gardons un compilateur de X vers L !Mais, il est maintenant écrit en M !Mais, il est maintenant écrit en M !

Page 66: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 66

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• D’abord nous compilons le nouveau compilateur D’abord nous compilons le nouveau compilateur

!!

L ML M

MM

M-machineM-machine

En diagramme T !En diagramme T !

X LX L

LL

X LX L

MM

Page 67: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 67

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• D’abord nous compilons le nouveau compilateur D’abord nous compilons le nouveau compilateur

!!

L ML M

MM

M-machineM-machine

En diagramme T !En diagramme T !

X LX L

LL

X LX L

MM

Nous l’avons rendu exécutable sur la M-machine ! ! !Nous l’avons rendu exécutable sur la M-machine ! ! !

Page 68: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 68

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux

compilateurs !compilateurs !

Page 69: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 69

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

X LX L

MM

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 70: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 70

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

X LX L

MM

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 71: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 71

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

X LX L

MM

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 72: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 72

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

X LX L

MM

M-machineM-machine

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 73: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 73

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

X LX L

MM

M-machineM-machine

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 74: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 74

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

X LX L

MM

M-machineM-machine

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 75: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 75

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

X LX L

MM

M-machineM-machine

X M*X M*

MM

• Maintenant, nous chaînons les deux Maintenant, nous chaînons les deux compilateurs !compilateurs !

Page 76: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 76

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• La meilleure solution est la suivante !La meilleure solution est la suivante !

Page 77: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 77

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• La meilleure solution est la suivante !La meilleure solution est la suivante !

• Ecrire est d’une difficulté Ecrire est d’une difficulté raisonnable !raisonnable !

X X MM

LL

Page 78: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 78

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• La meilleure solution est la suivante !La meilleure solution est la suivante !

• Ecrire est d’une difficulté Ecrire est d’une difficulté raisonnable !raisonnable !

– La traduction de X vers M est difficile, sans plus.La traduction de X vers M est difficile, sans plus.

– La réaliser dans le langage L est raisonnable ! ! !La réaliser dans le langage L est raisonnable ! ! !

X X MM

LL

Page 79: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 79

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• La meilleure solution est la suivante !La meilleure solution est la suivante !

• Ecrire est d’une difficulté Ecrire est d’une difficulté raisonnable !raisonnable !

– La traduction de X vers M est difficile, sans plus.La traduction de X vers M est difficile, sans plus.

– La réaliser dans le langage L est raisonnable ! ! !La réaliser dans le langage L est raisonnable ! ! !

X X MM

LL

Page 80: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 80

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

Page 81: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 81

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

M-machineM-machine

• Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

Page 82: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 82

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

M-machineM-machine

X X MM

LL

• Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

Page 83: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 83

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----

L ML M

MM

M-machineM-machine

X X MM

LL

X X MM

MM

• Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

Page 84: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 84

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

L ML M

MM

M-machineM-machine

X X MM

LL

X X MM

MM

Ce compilateur est bon !Ce compilateur est bon !

Page 85: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 85

C H A N G E RC H A N G E R

D ED E

M A C H I N EM A C H I N E

Page 86: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 86

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Pour le langage L , autonome sur M , nous Pour le langage L , autonome sur M , nous

voulons construire un bon compilateur sur voulons construire un bon compilateur sur une nouvelle machine N !une nouvelle machine N !

Page 87: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 87

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Pour le langage L , autonome sur M , nous Pour le langage L , autonome sur M , nous

voulons construire un bon compilateur sur voulons construire un bon compilateur sur une nouvelle machine N !une nouvelle machine N !

• Ecrire directement est très Ecrire directement est très difficile !difficile !

L L N N

NN

Page 88: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 88

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Pour le langage L , autonome sur M , nous Pour le langage L , autonome sur M , nous

voulons construire un bon compilateur sur voulons construire un bon compilateur sur une nouvelle machine N !une nouvelle machine N !

• Ecrire directement est très Ecrire directement est très difficile !difficile !

• Ecrire est d’une difficulté Ecrire est d’une difficulté raisonnable !raisonnable !

L L N N

NN

L L N N

LL

Page 89: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 89

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

Page 90: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 90

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

L ML M

MM

M-machineM-machine

Page 91: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 91

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

L ML M

MM

M-machineM-machine

L L N N

LL

Page 92: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 92

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

MM

Page 93: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 93

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

• Nous obtenons un « cross-compilateur » :Nous obtenons un « cross-compilateur » :

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

MM

Page 94: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 94

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

• Nous obtenons un « cross-compilateur » :Nous obtenons un « cross-compilateur » :

– qui s’exécute sur l’ancienne machine Mqui s’exécute sur l’ancienne machine M

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

MM

Page 95: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 95

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

• Nous obtenons un « cross-compilateur » :Nous obtenons un « cross-compilateur » :

– qui s’exécute sur l’ancienne machine Mqui s’exécute sur l’ancienne machine M

– et produit du code pour la nouvelle machine N .et produit du code pour la nouvelle machine N .

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

MM

Page 96: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 96

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous recompilons le nouveau compilateur, à Nous recompilons le nouveau compilateur, à

l’aide du cross-compilateur !l’aide du cross-compilateur !

Page 97: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 97

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous recompilons le nouveau compilateur, à Nous recompilons le nouveau compilateur, à

l’aide du cross-compilateur !l’aide du cross-compilateur !

M-machineM-machine

L L N N

MM

Page 98: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 98

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous recompilons le nouveau compilateur, à Nous recompilons le nouveau compilateur, à

l’aide du cross-compilateur !l’aide du cross-compilateur !

M-machineM-machine

L L N N

MM

L L N N

LL

Page 99: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 99

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous recompilons le nouveau compilateur, à l’aide du Nous recompilons le nouveau compilateur, à l’aide du

cross-compilateur !cross-compilateur !

• Nous obtenons un bon compilateur pour L et Nous obtenons un bon compilateur pour L et autonome sur la machine N !autonome sur la machine N !

M-machineM-machine

L L N N

MM

L L N N

LL

L L N N

NN

Page 100: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 100

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Nous recompilons le nouveau compilateur, à l’aide du Nous recompilons le nouveau compilateur, à l’aide du

cross-compilateur !cross-compilateur !

• Nous obtenons un bon compilateur pour L et Nous obtenons un bon compilateur pour L et autonome sur la machine N !autonome sur la machine N !

M-machineM-machine

L L N N

MM

L L N N

LL

L L N N

NN

Page 101: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 101

L EL E

T A B L E A UT A B L E A U

C O M P L E TC O M P L E T

Page 102: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 102

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

Page 103: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 103

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L ML M

MM

M-machineM-machine

Le matérielLe matérielLe compilateur initialLe compilateur initial

Page 104: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 104

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL L ML M

MM

M-machineM-machine

Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier source

Page 105: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 105

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

MM

L L N N

LL L ML M

MM

M-machineM-machine

Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Page 106: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 106

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL L ML M

MM

M-machineM-machine

L L N N

LL

Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le mêmeLe mêmefichier !fichier !

L L N N

MM

Page 107: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 107

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL L ML M

MM

M-machineM-machine

L L N N

LL

Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

L L N N

NN

Le mêmeLe mêmefichier !fichier !

L L N N

MM

Page 108: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 108

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL

L L N N

NN

L ML M

MM

M-machineM-machine

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

Le mêmeLe mêmefichier !fichier !

L L N N

MM

Page 109: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 109

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL

L L N N

NN

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

Le mêmeLe mêmefichier !fichier !

L L N N

MM

Page 110: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 110

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL

L L N N

NN

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

Le mêmeLe mêmefichier !fichier ! L L N N

NN

L L N N

MM

Page 111: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 111

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

LL

L L N N

NN

L ML M

MM

M-machineM-machine

L L N N

LL

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

Le mêmeLe mêmefichier !fichier ! L L N N

NN

Le test de régression :Le test de régression :

Le mêmeLe mêmeexécutable !exécutable !

L L N N

MM

Page 112: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 112

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

NN

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

L L N N

NN

Le test de régression :Le test de régression :

Le mêmeLe mêmeexécutable !exécutable !

Page 113: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 113

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

NN

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

L L N N

NN

Le test de régression :Le test de régression :

Le mêmeLe mêmeexécutable !exécutable !

Nous avons :Nous avons :

un compilateur opérationnel,un compilateur opérationnel,

Page 114: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 114

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

NN

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

L L N N

NN

Le test de régression :Le test de régression :

Le mêmeLe mêmeexécutable !exécutable !

Nous avons :Nous avons :

un compilateur opérationnel,un compilateur opérationnel,

son fichier source,son fichier source,

Page 115: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 115

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

NN

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

L L N N

NN

Le test de régression :Le test de régression :

Le mêmeLe mêmeexécutable !exécutable !

Nous avons :Nous avons :

un compilateur opérationnel,un compilateur opérationnel,

son fichier source,son fichier source,

nous savons regénérer l’exécutablenous savons regénérer l’exécutable..

Page 116: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 116

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Le tableau complet !Le tableau complet !

L L N N

NN

L L N N

LL

N-machineN-machine Le matérielLe matérielLe compilateur initialLe compilateur initial

Le fichier sourceLe fichier sourceLe cross-compilateur crééLe cross-compilateur créé

Le compilateur de L sur NLe compilateur de L sur N

L L N N

NN

Le test de régression :Le test de régression :

Le mêmeLe mêmeexécutable !exécutable !

Nous avons :Nous avons :

un compilateur opérationnel,un compilateur opérationnel,

son fichier source,son fichier source,

nous savons regénérer l’exécutable.nous savons regénérer l’exécutable.

Page 117: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 117

E NE N

R E S U M ER E S U M E

Page 118: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 118

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Construire un nouveau compilateur revient, Construire un nouveau compilateur revient,

dans la pratique, à écrire :dans la pratique, à écrire :

X X M M

LL

Page 119: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 119

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Construire un nouveau compilateur revient, Construire un nouveau compilateur revient,

dans la pratique, à écrire :dans la pratique, à écrire :

• Nous sommes obligés de décrire la Nous sommes obligés de décrire la traduction du langage évolué X vers le traduction du langage évolué X vers le langage de bas niveau M !langage de bas niveau M !

X X M M

LL

Page 120: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 120

Génération de nouveaux compilateursGénération de nouveaux compilateurs----------------------------------------------------------------------------------------------------------------------------

----• Construire un nouveau compilateur revient, dans la Construire un nouveau compilateur revient, dans la

pratique, à écrire :pratique, à écrire :

• Nous sommes obligés de décrire la traduction du Nous sommes obligés de décrire la traduction du langage évolué X vers le langage de bas niveau langage évolué X vers le langage de bas niveau M !M !

• Cette traduction peut être décrite à l’aide du Cette traduction peut être décrite à l’aide du langage de haut niveau L !langage de haut niveau L !

X X M M

LL

Page 121: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 121

L ‘ E N V I R O N N E M E N TL ‘ E N V I R O N N E M E N T

D ED E

C O M P I L A T I O NC O M P I L A T I O N

Page 122: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 122

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----

CompilationCompilation gccgcc

Page 123: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 123

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----

CompilationCompilation gccgcc

PréprocessingPréprocessing cppcpp

Nous nous occupons duNous nous occupons dusucre syntaxique :sucre syntaxique :

#include#include

#define#define

#ifdef#ifdef

. . .. . .

Nous réduisons ainsi la complexité du compilateur !Nous réduisons ainsi la complexité du compilateur !

Page 124: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 124

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----

CompilationCompilation gccgcc

PréprocessingPréprocessing

EditionEdition

cppcpp

emacsemacs

Les éditeurs comprennent déjà le langage et nousLes éditeurs comprennent déjà le langage et nousaident à éviter les fautes les plus grossières !aident à éviter les fautes les plus grossières !

Page 125: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 125

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----

CompilationCompilation gccgcc

PréprocessingPréprocessing

EditionEdition

cppcpp

emacsemacs

AssemblageAssemblage asmasm

Traduction d’un langage assembleur symbolique versTraduction d’un langage assembleur symbolique versle byte-code, insertion des bibliothèques statiques, . . . !le byte-code, insertion des bibliothèques statiques, . . . !

Page 126: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 126

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----

CompilationCompilation gccgcc

PréprocessingPréprocessing

EditionEdition

cppcpp

emacsemacs

AssemblageAssemblage

ChargementChargement

asmasm

ldld

Installation en mémoire, allocation des zones mémoire,Installation en mémoire, allocation des zones mémoire,édition des liens et bibliothèques dynamiques, . . . !édition des liens et bibliothèques dynamiques, . . . !

Page 127: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 127

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----

CompilationCompilation gccgcc

PréprocessingPréprocessing

EditionEdition

cppcpp

emacsemacs

AssemblageAssemblage

ChargementChargement

asmasm

ldld

SuccessionSuccessionchronologique !chronologique !

Page 128: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 128

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----• En plus :En plus :

Page 129: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 129

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----• En plus :En plus :

– Des vérificateurs de syntaxe comme « lint » !Des vérificateurs de syntaxe comme « lint » !

• Plus exigeants que le compilateur (cast risqués, Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, . . . ) !portabilité douteuse, code pas propre, . . . ) !

Page 130: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 130

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----• En plus :En plus :

– Des vérificateurs de syntaxe comme « lint » !Des vérificateurs de syntaxe comme « lint » !

• Plus exigeants que le compilateur (cast risqués, Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, . . . ) !portabilité douteuse, code pas propre, . . . ) !

– Des gestionnaires de versions comme « rcs » ou « cvs » Des gestionnaires de versions comme « rcs » ou « cvs » !!

• Ils gèrent les versions des sources et l’accès Ils gèrent les versions des sources et l’accès concurrent !concurrent !

Page 131: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 131

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----• En plus :En plus :

– Des vérificateurs de syntaxe comme « lint » !Des vérificateurs de syntaxe comme « lint » !

• Plus exigeants que le compilateur (cast risqués, Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, . . . ) !portabilité douteuse, code pas propre, . . . ) !

– Des gestionnaires de versions comme « rcs » ou « cvs » !Des gestionnaires de versions comme « rcs » ou « cvs » !

• Ils gèrent les versions des sources et l’accès concurrent !Ils gèrent les versions des sources et l’accès concurrent !

– Des outils comme « make » ou « imake » !Des outils comme « make » ou « imake » !

• Ils automatisent les compilations séparées et partielles !Ils automatisent les compilations séparées et partielles !

Page 132: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 132

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----• En plus :En plus :

– Des vérificateurs de syntaxe comme « lint » !Des vérificateurs de syntaxe comme « lint » !

• Plus exigeants que le compilateur (cast risqués, portabilité Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, . . . ) !douteuse, code pas propre, . . . ) !

– Des gestionnaires de versions comme « rcs » ou « cvs » !Des gestionnaires de versions comme « rcs » ou « cvs » !

• Ils gèrent les versions des sources et l’accès concurrent !Ils gèrent les versions des sources et l’accès concurrent !

– Des outils comme « make » ou « imake » !Des outils comme « make » ou « imake » !

• Ils automatisent les compilations séparées et partielles !Ils automatisent les compilations séparées et partielles !

– Des debuggers comme « gdb » !Des debuggers comme « gdb » !

• Ils contrôlent l’exécution, l’arrêt sur erreur, . . . !Ils contrôlent l’exécution, l’arrêt sur erreur, . . . !

Page 133: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 133

L’environnement de compilationL’environnement de compilation----------------------------------------------------------------------------------------------------------------------------

----• En plus :En plus :

– Des vérificateurs de syntaxe comme « lint » !Des vérificateurs de syntaxe comme « lint » !

• Plus exigeants que le compilateur (cast risqués, portabilité Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, . . . ) !douteuse, code pas propre, . . . ) !

– Des gestionnaires de versions comme « rcs » ou « cvs » !Des gestionnaires de versions comme « rcs » ou « cvs » !

• Ils gèrent les versions des sources et l’accès concurrent !Ils gèrent les versions des sources et l’accès concurrent !

– Des outils comme « make » ou « imake » !Des outils comme « make » ou « imake » !

• Ils automatisent les compilations séparées et partielles !Ils automatisent les compilations séparées et partielles !

– Des debuggers comme « gdb » !Des debuggers comme « gdb » !

• Ils contrôlent l’exécution, l’arrêt sur erreur, . . . !Ils contrôlent l’exécution, l’arrêt sur erreur, . . . !

Page 134: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 134

RésuméRésumé----------------------------------------------------------------------------------------------------------------------------

----

•Définitions de baseDéfinitions de base

•Composition de compilateursComposition de compilateurs

•L’environnement d’un compilateurL’environnement d’un compilateur

Page 135: 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Marc.Gengler@esil.univmed.fr Cours de compilation 18h de cours avec un peu de TD un projet

19 septembre 2007 Cours de compilation 1 - Intranet 135

C ’ e S t L a F i N ! C ’ e S t L a F i N ! ! !! !

b O n N eb O n N eJ o U r N é E ! ! !J o U r N é E ! ! !