Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parRenart Flament Modifié depuis plus de 10 années
1
Marc Gengler Marc.Gengler@esil.univmed.fr
Cours de compilation Marc Gengler 18h de cours avec un peu de TD un projet de 32h et un examen 19 septembre 2007 Cours de compilation 1 - Intranet
2
Marc Gengler Marc.Gengler@esil.univ-mrs.fr
Cours de compilation Marc Gengler Le projet fait office de TD ! 18h de cours avec un peu de TD un projet de 32h et un examen 19 septembre 2007 Cours de compilation 1 - Intranet
3
Les grandes lignes du cours
Définitions de base Composition de compilateurs L’environnement d’un compilateur Evaluation partielle et compilation Analyses lexicales et syntaxiques Techniques d’analyse descendantes Techniques d’analyse ascendantes YACC Analyse sémantique Environnement d’exécution Génération de code Optimisation de code 19 septembre 2007 Cours de compilation 1 - Intranet
4
Cours de compilation 1 - Intranet
Bibliographie Tout ce qui contient compilation, compilateur, compiler. Internet souvent, c’est trop simplifié ou trop dense, et pas toujours correct. Mes choix Principles of Compiler Design, Aho & Ullman. « The green dragon book » (1977) Compilers: Principles, Techniques, and Tools, Aho, Sethi & Ullman. « The red dragon book » (1986) Lex & Yacc, Levine. 19 septembre 2007 Cours de compilation 1 - Intranet
5
Les grandes lignes du cours
Définitions de base Composition de compilateurs L’environnement d’un compilateur Evaluation partielle et compilation Analyses lexicales et syntaxiques Techniques d’analyse descendantes et ascendantes YACC Analyse sémantique Environnement d’exécution Génération de code Optimisation de code 19 septembre 2007 Cours de compilation 1 - Intranet
6
Cours de compilation 1 - Intranet
I N T R O D U C T I O N 19 septembre 2007 Cours de compilation 1 - Intranet
7
Cours de compilation 1 - Intranet
Définition de base Un compilateur est un TRADUCTEUR d’un « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. 19 septembre 2007 Cours de compilation 1 - Intranet
8
Cours de compilation 1 - Intranet
Définition de base Un compilateur est un TRADUCTEUR d’un « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. C ASM Compilateur 19 septembre 2007 Cours de compilation 1 - Intranet
9
Cours de compilation 1 - Intranet
Définition de base Un compilateur est un TRADUCTEUR d’un « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. C ASM Compilateur void main () {int x; if … load A , #13 add A , B , C … 19 septembre 2007 Cours de compilation 1 - Intranet
10
Cours de compilation 1 - Intranet
Définition de base Un compilateur est un TRADUCTEUR d’un « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. C ASM Compilateur Pascal C Compilateur ’ 19 septembre 2007 Cours de compilation 1 - Intranet
11
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un compilateur lit tout le texte source, 19 septembre 2007 Cours de compilation 1 - Intranet
12
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un compilateur lit tout le texte source, le comprend (vérifie) 19 septembre 2007 Cours de compilation 1 - Intranet
13
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un compilateur lit tout le texte source, le comprend (vérifie) et le traduit en un texte équivalent. 19 septembre 2007 Cours de compilation 1 - Intranet
14
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un compilateur lit tout le texte source, le comprend (vérifie) et le traduit en un texte équivalent. Il n’exécute pas le programme ! 19 septembre 2007 Cours de compilation 1 - Intranet
15
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un interprète lit une instruction source, 19 septembre 2007 Cours de compilation 1 - Intranet
16
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un interprète lit une instruction source, la comprend (vérifie), 19 septembre 2007 Cours de compilation 1 - Intranet
17
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un interprète lit une instruction source, la comprend (vérifie), l’exécute 19 septembre 2007 Cours de compilation 1 - Intranet
18
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un interprète lit une instruction source, la comprend (vérifie), l’exécute et passe à l’instruction suivante. 19 septembre 2007 Cours de compilation 1 - Intranet
19
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un interprète lit une instruction source, la comprend (vérifie), l’exécute et passe à l’instruction suivante. Il exécute le programme ! 19 septembre 2007 Cours de compilation 1 - Intranet
20
Cours de compilation 1 - Intranet
Compilation >< Interprétation Un interprète lit une instruction source, la comprend (vérifie), l’exécute et passe à l’instruction suivante. Il exécute le programme ! Un processeur est un interprète de son byte-code ! 19 septembre 2007 Cours de compilation 1 - Intranet
21
Cours de compilation 1 - Intranet
C H A I N A G E D E C O M P I L A T E U R S 19 septembre 2007 Cours de compilation 1 - Intranet
22
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 19 septembre 2007 Cours de compilation 1 - Intranet
23
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 19 septembre 2007 Cours de compilation 1 - Intranet
24
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 Ils peuvent être vus comme un seul compilateur ! 19 septembre 2007 Cours de compilation 1 - Intranet
25
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 En termes de langages : Source C1 Intermédiaire C2 Cible 19 septembre 2007 Cours de compilation 1 - Intranet
26
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 En termes de langages : Source C1 Intermédiaire C2 Cible Fréquent dans la pratique : ASM correct Source C1 C2 ASM optimisé 19 septembre 2007 Cours de compilation 1 - Intranet
27
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 Nous pouvons partager un FRONT-END : C2 ASM X86 Source C1 ASM virtuel C3 ASM Mips 19 septembre 2007 Cours de compilation 1 - Intranet
28
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 Nous pouvons partager un BACK-END : Pascal C1 Intermédiaire C3 ASM Modula C2 19 septembre 2007 Cours de compilation 1 - Intranet
29
Cours de compilation 1 - Intranet
Chaînage de compilateurs C1 C2 Et nous combinons (gcc et g++ par exemple) : C C1 C3 ASM X86 Intermédiaire C++ C2 C4 ASM Mips 19 septembre 2007 Cours de compilation 1 - Intranet
30
Cours de compilation 1 - Intranet
L E S L A N G A G E S D A N S U N C O M P I L A T E U R 19 septembre 2007 Cours de compilation 1 - Intranet
31
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Un compilateur traduit du langage S vers le langage C, est lui-même écrit en un langage I. 19 septembre 2007 Cours de compilation 1 - Intranet
32
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Un compilateur traduit du langage S vers le langage C, est lui-même écrit en un langage I. Comp S -> C I 19 septembre 2007 Cours de compilation 1 - Intranet
33
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Un compilateur traduit du langage S vers le langage C, est lui-même écrit en un langage I. Comp ou encore, par le « diagramme en T » : S C S -> C I S C I I 19 septembre 2007 Cours de compilation 1 - Intranet
34
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M ! 19 septembre 2007 Cours de compilation 1 - Intranet
35
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M ! Un compilateur de L , autonome sur la M-machine, est : L M M 19 septembre 2007 Cours de compilation 1 - Intranet
36
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M ! Un compilateur de L , autonome sur la M-machine, est : Source L M M L 19 septembre 2007 Cours de compilation 1 - Intranet
37
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M ! Un compilateur de L , autonome sur la M-machine, est : Source L M M Cible L M 19 septembre 2007 Cours de compilation 1 - Intranet
38
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M ! Un compilateur de L , autonome sur la M-machine, est : Source L M M Cible L M M-machine Le support d’exécution M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
39
Cours de compilation 1 - Intranet
Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M ! Un compilateur de L , autonome sur la M-machine, est : La compilation et l’exécution du code compilé peuvent se faire sur la M-machine ! ! ! Source L M M Cible L M M-machine Le support d’exécution M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
40
Cours de compilation 1 - Intranet
G E N E R A T I O N D E N O U V E A U X C O M P I L A T E U R S 19 septembre 2007 Cours de compilation 1 - Intranet
41
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous disposons d’un compilateur de L , autonome sur M ! L M M 19 septembre 2007 Cours de compilation 1 - Intranet
42
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous disposons d’un compilateur de L , autonome sur M ! Nous voulons un compilateur de X , autonome sur M ! L M M X M M 19 septembre 2007 Cours de compilation 1 - Intranet
43
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous disposons d’un compilateur de L , autonome sur M ! Nous voulons un compilateur de X , autonome sur M ! Nous voulons un compilateur de L , autonome sur N ! L M M X M M L N N 19 septembre 2007 Cours de compilation 1 - Intranet
44
Même machine ! Nouveau langage ! Même langage ! Nouvelle machine !
Génération de nouveaux compilateurs Nous disposons d’un compilateur de L , autonome sur M ! Nous voulons un compilateur de X , autonome sur M ! Nous voulons un compilateur de L , autonome sur N ! L M M X M M Même machine ! Nouveau langage ! L N Même langage ! Nouvelle machine ! N 19 septembre 2007 Cours de compilation 1 - Intranet
45
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! 19 septembre 2007 Cours de compilation 1 - Intranet
46
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! 19 septembre 2007 Cours de compilation 1 - Intranet
47
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! Indiquons l’inefficacité par * ! ! ! 19 septembre 2007 Cours de compilation 1 - Intranet
48
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! Indiquons l’inefficacité par * ! ! ! L M* M Ce compilateur est rapide, mais le code produit n’est pas bon ! 19 septembre 2007 Cours de compilation 1 - Intranet
49
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! Indiquons l’inefficacité par * ! ! ! L M* L M L M* L M M M* M* M 19 septembre 2007 Cours de compilation 1 - Intranet
50
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! Indiquons l’inefficacité par * ! ! ! L M* L M L M* L M M M* M* M Il est lent, mais produit un bon résultat ! 19 septembre 2007 Cours de compilation 1 - Intranet
51
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! Indiquons l’inefficacité par * ! ! ! L M* L M L M* L M M M* M* M Il est lent et mauvais ! 19 septembre 2007 Cours de compilation 1 - Intranet
52
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien ! La compilation est rapide ! Le code compilé est rapide, efficace en mémoire, ! Indiquons l’inefficacité par * ! ! ! L M* L M L M* L M M M* M* M Il est bon ! 19 septembre 2007 Cours de compilation 1 - Intranet
53
Cours de compilation 1 - Intranet
C H A N G E R D E L A N G A G E 19 septembre 2007 Cours de compilation 1 - Intranet
54
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! 19 septembre 2007 Cours de compilation 1 - Intranet
55
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! Ecrire directement est très difficile ! X M M 19 septembre 2007 Cours de compilation 1 - Intranet
56
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! Ecrire directement est très difficile ! Faire une bonne traduction de X vers M est difficile ! La réaliser de surcroît en M ne facilite rien ! ! ! X M M 19 septembre 2007 Cours de compilation 1 - Intranet
57
Il nous faut une autre solution !
Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! Ecrire directement est très difficile ! Faire une bonne traduction de X vers M est difficile ! La réaliser de surcroît en M ne facilite rien ! ! ! X M M Il nous faut une autre solution ! 19 septembre 2007 Cours de compilation 1 - Intranet
58
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs ! 19 septembre 2007 Cours de compilation 1 - Intranet
59
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs ! Ecrire est très facile ! X L L 19 septembre 2007 Cours de compilation 1 - Intranet
60
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs ! Ecrire est très facile ! La traduction entre les langages évolués X et L est très facile. La réaliser de surcroît en L rend la chose aisée ! ! ! X L L 19 septembre 2007 Cours de compilation 1 - Intranet
61
Mais je n'ai qu'une M-machine ! ?
Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs ! Ecrire est très facile ! La traduction entre les langages évolués X et L est très facile. La réaliser de surcroît en L rend la chose aisée ! ! ! X L L Mais je n'ai qu'une M-machine ! ? 19 septembre 2007 Cours de compilation 1 - Intranet
62
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs D’abord nous compilons le nouveau compilateur ! 19 septembre 2007 Cours de compilation 1 - Intranet
63
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs D’abord nous compilons le nouveau compilateur ! L M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
64
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs D’abord nous compilons le nouveau compilateur ! X L L M M L M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
65
Génération de nouveaux compilateurs ----------------------------------------------------------------
D’abord nous compilons le nouveau compilateur ! X L X L L M M L M M-machine Nous gardons un compilateur de X vers L ! Mais, il est maintenant écrit en M ! 19 septembre 2007 Cours de compilation 1 - Intranet
66
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs D’abord nous compilons le nouveau compilateur ! X L X L L L M M M M-machine En diagramme T ! 19 septembre 2007 Cours de compilation 1 - Intranet
67
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs D’abord nous compilons le nouveau compilateur ! X L X L L L M M M M-machine En diagramme T ! Nous l’avons rendu exécutable sur la M-machine ! ! ! 19 septembre 2007 Cours de compilation 1 - Intranet
68
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Maintenant, nous chaînons les deux compilateurs ! 19 septembre 2007 Cours de compilation 1 - Intranet
69
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Maintenant, nous chaînons les deux compilateurs ! X L M 19 septembre 2007 Cours de compilation 1 - Intranet
70
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Maintenant, nous chaînons les deux compilateurs ! X L M L M M 19 septembre 2007 Cours de compilation 1 - Intranet
71
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Maintenant, nous chaînons les deux compilateurs ! Boite verte ! X L M L M M 19 septembre 2007 Cours de compilation 1 - Intranet
72
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Maintenant, nous chaînons les deux compilateurs ! Boite verte ! X L M L M M Exécutable sur la M-machine ! M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
73
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Traduction de X vers M ! ! ! Maintenant, nous chaînons les deux compilateurs ! Boite verte ! X L M L M M Exécutable sur la M-machine ! M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
74
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Traduction de X vers M ! ! ! Maintenant, nous chaînons les deux compilateurs ! Boite verte ! X L M L M M Exécutable sur la M-machine ! M-machine Le passage obligé par le langage L perd de l'efficacité ! 19 septembre 2007 Cours de compilation 1 - Intranet
75
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Traduction de X vers M ! ! ! Maintenant, nous chaînons les deux compilateurs ! Boite verte ! X L M L M M Exécutable sur la M-machine ! M-machine Le passage obligé par le langage L perd de l'efficacité ! X M* M 19 septembre 2007 Cours de compilation 1 - Intranet
76
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs La meilleure solution est la suivante ! 19 septembre 2007 Cours de compilation 1 - Intranet
77
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs La meilleure solution est la suivante ! Ecrire est d’une difficulté raisonnable ! X M L 19 septembre 2007 Cours de compilation 1 - Intranet
78
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs La meilleure solution est la suivante ! Ecrire est d’une difficulté raisonnable ! La traduction de X vers M est difficile, sans plus. La réaliser dans le langage L est raisonnable ! ! ! X M L 19 septembre 2007 Cours de compilation 1 - Intranet
79
Mais je n'ai qu'une M-machine ! ?
Génération de nouveaux compilateurs La meilleure solution est la suivante ! Ecrire est d’une difficulté raisonnable ! La traduction de X vers M est difficile, sans plus. La réaliser dans le langage L est raisonnable ! ! ! X M L Mais je n'ai qu'une M-machine ! ? 19 septembre 2007 Cours de compilation 1 - Intranet
80
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur ! 19 septembre 2007 Cours de compilation 1 - Intranet
81
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur ! L M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
82
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur ! X M L L M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
83
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur ! X M X M L L M M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
84
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur ! X M X M L L M M M M-machine Ce compilateur est bon ! 19 septembre 2007 Cours de compilation 1 - Intranet
85
Cours de compilation 1 - Intranet
C H A N G E R D E M A C H I N E 19 septembre 2007 Cours de compilation 1 - Intranet
86
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Pour le langage L , autonome sur M , nous voulons construire un bon compilateur sur une nouvelle machine N ! 19 septembre 2007 Cours de compilation 1 - Intranet
87
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Pour le langage L , autonome sur M , nous voulons construire un bon compilateur sur une nouvelle machine N ! Ecrire directement est très difficile ! L N N 19 septembre 2007 Cours de compilation 1 - Intranet
88
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Pour le langage L , autonome sur M , nous voulons construire un bon compilateur sur une nouvelle machine N ! Ecrire directement est très difficile ! Ecrire est d’une difficulté raisonnable ! L N N L N L 19 septembre 2007 Cours de compilation 1 - Intranet
89
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! 19 septembre 2007 Cours de compilation 1 - Intranet
90
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! L M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
91
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! L N L L M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
92
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! L N L N L L M M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
93
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! Nous obtenons un « cross-compilateur » : L N L N L L M M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
94
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! Nous obtenons un « cross-compilateur » : qui s’exécute sur l’ancienne machine M L N L N L L M M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
95
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous compilons le nouveau compilateur ! Nous obtenons un « cross-compilateur » : qui s’exécute sur l’ancienne machine M et produit du code pour la nouvelle machine N . L N L N L L M M M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
96
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à l’aide du cross-compilateur ! 19 septembre 2007 Cours de compilation 1 - Intranet
97
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à l’aide du cross-compilateur ! L N M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
98
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à l’aide du cross-compilateur ! L N L L N M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
99
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à l’aide du cross-compilateur ! Nous obtenons un bon compilateur pour L et autonome sur la machine N ! L N L L N N L N M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
100
Le cross-compilateur devient obsolète !
Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à l’aide du cross-compilateur ! Nous obtenons un bon compilateur pour L et autonome sur la machine N ! L N L L N N L N M M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
101
Cours de compilation 1 - Intranet
L E T A B L E A U C O M P L E T 19 septembre 2007 Cours de compilation 1 - Intranet
102
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! 19 septembre 2007 Cours de compilation 1 - Intranet
103
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! L M M Le matériel Le compilateur initial M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
104
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! L N L L M M Le matériel Le compilateur initial Le fichier source M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
105
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! L N L L N M L M M Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
106
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le même fichier ! L N L L N L L N M L M M Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
107
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le même fichier ! L N L L N N L N L L N M L M M Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
108
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Nous passons sur la nouvelle machine ! ! ! Le tableau complet ! Le même fichier ! L N L L N L N L L N M N L M M N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
109
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le même fichier ! L N L L N L L N L N L L N M N L M M N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
110
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le même fichier ! L N L L N N L N L L N L N L L N M N L M M N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
111
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le test de régression : Le même exécutable ! Le même fichier ! L N L L N N L N L L N L N L L N M N L M M N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N M-machine 19 septembre 2007 Cours de compilation 1 - Intranet
112
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le test de régression : Le même exécutable ! L N L L N N L N N Nous pouvons jeter la M-machine ! ! ! N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N 19 septembre 2007 Cours de compilation 1 - Intranet
113
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le test de régression : Le même exécutable ! L N L L N N L N Nous avons : un compilateur opérationnel, N N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N 19 septembre 2007 Cours de compilation 1 - Intranet
114
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le test de régression : Le même exécutable ! L N L L N N L N Nous avons : un compilateur opérationnel, son fichier source, N N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N 19 septembre 2007 Cours de compilation 1 - Intranet
115
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Le tableau complet ! Le test de régression : Le même exécutable ! L N L L N N L N Nous avons : un compilateur opérationnel, son fichier source, nous savons regénérer l’exécutable. N N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N 19 septembre 2007 Cours de compilation 1 - Intranet
116
La machine M ne sert donc plus !
Génération de nouveaux compilateurs Le tableau complet ! Le test de régression : Le même exécutable ! L N L L N N L N Nous avons : un compilateur opérationnel, son fichier source, nous savons regénérer l’exécutable. N N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N 19 septembre 2007 Cours de compilation 1 - Intranet
117
Cours de compilation 1 - Intranet
E N R E S U M E 19 septembre 2007 Cours de compilation 1 - Intranet
118
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Construire un nouveau compilateur revient, dans la pratique, à écrire : X M L 19 septembre 2007 Cours de compilation 1 - Intranet
119
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Construire un nouveau compilateur revient, dans la pratique, à écrire : Nous sommes obligés de décrire la traduction du langage évolué X vers le langage de bas niveau M ! X M L 19 septembre 2007 Cours de compilation 1 - Intranet
120
Cours de compilation 1 - Intranet
Génération de nouveaux compilateurs Construire un nouveau compilateur revient, dans la pratique, à écrire : Nous sommes obligés de décrire la traduction du langage évolué X vers le langage de bas niveau M ! Cette traduction peut être décrite à l’aide du langage de haut niveau L ! X M L 19 septembre 2007 Cours de compilation 1 - Intranet
121
Cours de compilation 1 - Intranet
L ‘ E N V I R O N N E M E N T D E C O M P I L A T I O N 19 septembre 2007 Cours de compilation 1 - Intranet
122
Cours de compilation 1 - Intranet
L’environnement de compilation Compilation gcc 19 septembre 2007 Cours de compilation 1 - Intranet
123
Cours de compilation 1 - Intranet
L’environnement de compilation Nous nous occupons du sucre syntaxique : #include #define #ifdef . . . Préprocessing cpp Compilation gcc Nous réduisons ainsi la complexité du compilateur ! 19 septembre 2007 Cours de compilation 1 - Intranet
124
Cours de compilation 1 - Intranet
L’environnement de compilation Edition emacs Préprocessing cpp Compilation gcc Les éditeurs comprennent déjà le langage et nous aident à éviter les fautes les plus grossières ! 19 septembre 2007 Cours de compilation 1 - Intranet
125
Cours de compilation 1 - Intranet
L’environnement de compilation Edition emacs Préprocessing cpp Compilation gcc Assemblage asm Traduction d’un langage assembleur symbolique vers le byte-code, insertion des bibliothèques statiques, ! 19 septembre 2007 Cours de compilation 1 - Intranet
126
Cours de compilation 1 - Intranet
L’environnement de compilation Edition emacs Préprocessing cpp Compilation gcc Assemblage asm Chargement ld Installation en mémoire, allocation des zones mémoire, édition des liens et bibliothèques dynamiques, ! 19 septembre 2007 Cours de compilation 1 - Intranet
127
Cours de compilation 1 - Intranet
L’environnement de compilation Edition emacs Préprocessing cpp Succession chronologique ! Compilation gcc Assemblage asm Chargement ld 19 septembre 2007 Cours de compilation 1 - Intranet
128
Cours de compilation 1 - Intranet
L’environnement de compilation En plus : 19 septembre 2007 Cours de compilation 1 - Intranet
129
Cours de compilation 1 - Intranet
L’environnement de compilation En plus : Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, ) ! 19 septembre 2007 Cours de compilation 1 - Intranet
130
Cours de compilation 1 - Intranet
L’environnement de compilation En plus : Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, ) ! Des gestionnaires de versions comme « rcs » ou « cvs » ! Ils gèrent les versions des sources et l’accès concurrent ! 19 septembre 2007 Cours de compilation 1 - Intranet
131
Cours de compilation 1 - Intranet
L’environnement de compilation En plus : Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, ) ! Des gestionnaires de versions comme « rcs » ou « cvs » ! Ils gèrent les versions des sources et l’accès concurrent ! Des outils comme « make » ou « imake » ! Ils automatisent les compilations séparées et partielles ! 19 septembre 2007 Cours de compilation 1 - Intranet
132
Cours de compilation 1 - Intranet
L’environnement de compilation En plus : Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, ) ! Des gestionnaires de versions comme « rcs » ou « cvs » ! Ils gèrent les versions des sources et l’accès concurrent ! Des outils comme « make » ou « imake » ! Ils automatisent les compilations séparées et partielles ! Des debuggers comme « gdb » ! Ils contrôlent l’exécution, l’arrêt sur erreur, ! 19 septembre 2007 Cours de compilation 1 - Intranet
133
Et de manière plus large, d'outils de génie logiciel ! ! !
plein de techniques et d'outils de génie logiciel ! ! ! L’environnement de compilation En plus : Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre, ) ! Des gestionnaires de versions comme « rcs » ou « cvs » ! Ils gèrent les versions des sources et l’accès concurrent ! Des outils comme « make » ou « imake » ! Ils automatisent les compilations séparées et partielles ! Des debuggers comme « gdb » ! Ils contrôlent l’exécution, l’arrêt sur erreur, ! 19 septembre 2007 Cours de compilation 1 - Intranet
134
Cours de compilation 1 - Intranet
Résumé Définitions de base Composition de compilateurs L’environnement d’un compilateur 19 septembre 2007 Cours de compilation 1 - Intranet
135
Cours de compilation 1 - Intranet
C ’ e S t L a F i N ! ! ! b O n N e J o U r N é E ! ! ! 19 septembre 2007 Cours de compilation 1 - Intranet
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.