La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours de compilation Marc Gengler 18h de cours avec un peu de TD

Présentations similaires


Présentation au sujet: "Cours de compilation Marc Gengler 18h de cours avec un peu de TD"— Transcription de la présentation:

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


Télécharger ppt "Cours de compilation Marc Gengler 18h de cours avec un peu de TD"

Présentations similaires


Annonces Google