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

19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Cours de compilation 18h de cours avec un peu de TD un projet.

Présentations similaires


Présentation au sujet: "19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Cours de compilation 18h de cours avec un peu de TD un projet."— Transcription de la présentation:

1 19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Cours de compilation 18h de cours avec un peu de TD un projet de 32h... et un examen

2 19 septembre 2007Cours de compilation 1 - Intranet2 Marc Gengler Cours de compilation 18h de cours avec un peu de TD un projet de 32h... et un examen

3 19 septembre 2007Cours de compilation 1 - Intranet3 Les grandes lignes du cours Définitions de base Définitions de base Composition de compilateurs Composition de compilateurs Lenvironnement dun compilateur Lenvironnement dun compilateur Evaluation partielle et compilation Evaluation partielle et compilation Analyses lexicales et syntaxiques Analyses lexicales et syntaxiques Techniques danalyse descendantes Techniques danalyse descendantes Techniques danalyse ascendantes Techniques danalyse ascendantes YACC YACC Analyse sémantique Analyse sémantique Environnement dexécution Environnement dexécution Génération de code Génération de code Optimisation de code Optimisation de code

4 19 septembre 2007Cours de compilation 1 - Intranet4Bibliographie Tout ce qui contientTout ce qui contient – compilation, compilateur, compiler. InternetInternet – souvent, cest trop simplifié ou trop dense, – et pas toujours correct. Mes choixMes choix – Principles of Compiler Design, Aho & Ullman. « The green dragon book » (1977) « The green dragon book » (1977) – Compilers: Principles, Techniques, and Tools, Aho, Sethi & Ullman. Aho, Sethi & Ullman. « The red dragon book » (1986) « The red dragon book » (1986) – Lex & Yacc, Levine.

5 19 septembre 2007Cours de compilation 1 - Intranet5 Les grandes lignes du cours Définitions de base Définitions de base Composition de compilateurs Composition de compilateurs Lenvironnement dun compilateur Lenvironnement dun compilateur Evaluation partielle et compilation Evaluation partielle et compilation Analyses lexicales et syntaxiques Analyses lexicales et syntaxiques Techniques danalyse descendantes et Techniques danalyse descendantes et ascendantes ascendantes YACC YACC Analyse sémantique Analyse sémantique Environnement dexécution Environnement dexécution Génération de code Génération de code Optimisation de code Optimisation de code

6 19 septembre 2007Cours de compilation 1 - Intranet6 I N T R O D U C T I O N

7 19 septembre 2007Cours de compilation 1 - Intranet7 Définition de base Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR dun « texte » écrit en langage source L dun « texte » écrit en langage source L vers le « même texte » écrit en langage cible C.

8 19 septembre 2007Cours de compilation 1 - Intranet8 Définition de base Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR dun « texte » écrit en langage source L dun « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. Compilateur CASM

9 19 septembre 2007Cours de compilation 1 - Intranet9 Définition de base Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR dun « texte » écrit en langage source L dun « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. Compilateur CASM void main () {int x; {int x; if … if … load A, #13 add A, B, C …

10 19 septembre 2007Cours de compilation 1 - Intranet10 Définition de base Un compilateur est un TRADUCTEURUn compilateur est un TRADUCTEUR dun « texte » écrit en langage source L dun « texte » écrit en langage source L vers le « même texte » écrit en langage cible C. Compilateur CASM Compilateur Compilateur PascalC

11 19 septembre 2007Cours de compilation 1 - Intranet11 Compilation > < Interprétation Un compilateurUn compilateur –lit tout le texte source,

12 19 septembre 2007Cours de compilation 1 - Intranet12 Compilation > < Interprétation Un compilateurUn compilateur –lit tout le texte source, –le comprend (vérifie)

13 19 septembre 2007Cours de compilation 1 - Intranet13 Compilation > < Interprétation Un compilateurUn compilateur –lit tout le texte source, –le comprend (vérifie) –et le traduit en un texte équivalent.

14 19 septembre 2007Cours de compilation 1 - Intranet14 Compilation > < Interprétation Un compilateurUn compilateur –lit tout le texte source, –le comprend (vérifie) –et le traduit en un texte équivalent. Il nexécute pas le programme !

15 19 septembre 2007Cours de compilation 1 - Intranet15 Compilation > < Interprétation Un interprèteUn interprète –lit une instruction source,

16 19 septembre 2007Cours de compilation 1 - Intranet16 Compilation > < Interprétation Un interprèteUn interprète –lit une instruction source, –la comprend (vérifie),

17 19 septembre 2007Cours de compilation 1 - Intranet17 Compilation > < Interprétation Un interprèteUn interprète –lit une instruction source, –la comprend (vérifie), –lexécute

18 19 septembre 2007Cours de compilation 1 - Intranet18 Compilation > < Interprétation Un interprèteUn interprète –lit une instruction source, –la comprend (vérifie), –lexécute –et passe à linstruction suivante.

19 19 septembre 2007Cours de compilation 1 - Intranet19 Compilation > < Interprétation Un interprèteUn interprète –lit une instruction source, –la comprend (vérifie), –lexécute –et passe à linstruction suivante. Il exécute le programme !

20 19 septembre 2007Cours de compilation 1 - Intranet20 Compilation > < Interprétation Un interprèteUn interprète –lit une instruction source, –la comprend (vérifie), –lexécute –et passe à linstruction suivante. Il exécute le programme ! Un processeur est un interprète de son byte-code !

21 19 septembre 2007Cours de compilation 1 - Intranet21 C H A I N A G E D E C O M P I L A T E U R S

22 19 septembre 2007Cours de compilation 1 - Intranet22 Chaînage de compilateurs C1

23 19 septembre 2007Cours de compilation 1 - Intranet23 Chaînage de compilateurs C1C2

24 19 septembre 2007Cours de compilation 1 - Intranet24 Chaînage de compilateurs C1C2 Ils peuvent être vus comme un seul compilateur !

25 19 septembre 2007Cours de compilation 1 - Intranet25 Chaînage de compilateurs C1C2 En termes de langages : C1C2 Source CibleIntermédiaire

26 19 septembre 2007Cours de compilation 1 - Intranet26 Chaînage de compilateurs C1C2 En termes de langages : C1C2 Source CibleIntermédiaire Fréquent dans la pratique : C1C2 Source ASM optimisé ASMcorrect

27 19 septembre 2007Cours de compilation 1 - Intranet27 Chaînage de compilateurs C1C2 Nous pouvons partager un FRONT-END : C1 C2 Source ASM X86 ASM virtuel C3 ASM Mips

28 19 septembre 2007Cours de compilation 1 - Intranet28 Chaînage de compilateurs C1C2 Nous pouvons partager un BACK-END : C3 C1 ASM Pascal Intermédiaire C2 Modula

29 19 septembre 2007Cours de compilation 1 - Intranet29 Chaînage de compilateurs C1C2 Et nous combinons (gcc et g++ par exemple) : C1 C Intermédiaire C++ C3 ASM X86 C4 ASM Mips C2

30 19 septembre 2007Cours de compilation 1 - Intranet30 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

31 19 septembre 2007Cours de compilation 1 - Intranet31 Un compilateur et sa réalisation Un compilateurUn compilateur –traduit du langage S vers le langage C, –est lui-même écrit en un langage I.

32 19 septembre 2007Cours de compilation 1 - Intranet32 Un compilateur et sa réalisation Un compilateurUn compilateur –traduit du langage S vers le langage C, –est lui-même écrit en un langage I. Comp Comp S - > C I

33 19 septembre 2007Cours de compilation 1 - Intranet33 Un compilateur et sa réalisation Un compilateurUn compilateur –traduit du langage S vers le langage C, –est lui-même écrit en un langage I. Comp Comp ou encore, par le « diagramme en T » : S C S C S - > C I I S C I

34 19 septembre 2007Cours de compilation 1 - Intranet34 Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !

35 19 septembre 2007Cours de compilation 1 - Intranet35 Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !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 :Un compilateur de L, autonome sur la M-machine, est : L M M

36 19 septembre 2007Cours de compilation 1 - Intranet36 Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !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 :Un compilateur de L, autonome sur la M-machine, est : L M M Source L

37 19 septembre 2007Cours de compilation 1 - Intranet37 Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !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 :Un compilateur de L, autonome sur la M-machine, est : L M M Source L Cible M

38 19 septembre 2007Cours de compilation 1 - Intranet38 Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !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 :Un compilateur de L, autonome sur la M-machine, est : L M M Source L Cible M M-machine Le support dexécution M-machine

39 19 septembre 2007Cours de compilation 1 - Intranet39 Un compilateur et sa réalisation Appelons une « M-machine » ou « M-interprète » une machine dont le processeur interprète M !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 :Un compilateur de L, autonome sur la M-machine, est : La compilation et lexécution du code compilé peuvent se faire sur la M-machine ! ! !La compilation et lexécution du code compilé peuvent se faire sur la M-machine ! ! ! L M M Source L Cible M M-machine Le support dexécution M-machine

40 19 septembre 2007Cours de compilation 1 - Intranet40 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

41 19 septembre 2007Cours de compilation 1 - Intranet41 Génération de nouveaux compilateurs Nous disposons dun compilateur de L, autonome sur M !Nous disposons dun compilateur de L, autonome sur M ! L M M

42 19 septembre 2007Cours de compilation 1 - Intranet42 Génération de nouveaux compilateurs Nous disposons dun compilateur de L, autonome sur M !Nous disposons dun compilateur de L, autonome sur M ! Nous voulons un compilateur de X, autonome sur M !Nous voulons un compilateur de X, autonome sur M ! L M M X M M

43 19 septembre 2007Cours de compilation 1 - Intranet43 Génération de nouveaux compilateurs Nous disposons dun compilateur de L, autonome sur M !Nous disposons dun compilateur de L, autonome sur M ! Nous voulons un compilateur de X, autonome sur M !Nous voulons un compilateur de X, autonome sur M ! Nous voulons un compilateur de L, autonome sur N !Nous voulons un compilateur de L, autonome sur N ! L M M X M M L N N

44 19 septembre 2007Cours de compilation 1 - Intranet44 Génération de nouveaux compilateurs Nous disposons dun compilateur de L, autonome sur M !Nous disposons dun compilateur de L, autonome sur M ! Nous voulons un compilateur de X, autonome sur M !Nous voulons un compilateur de X, autonome sur M ! Nous voulons un compilateur de L, autonome sur N !Nous voulons un compilateur de L, autonome sur N ! L M M X M M L N N

45 19 septembre 2007Cours de compilation 1 - Intranet45 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien !

46 19 septembre 2007Cours de compilation 1 - Intranet46 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... !

47 19 septembre 2007Cours de compilation 1 - Intranet47 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... ! Indiquons linefficacité par * ! ! !Indiquons linefficacité par * ! ! !

48 19 septembre 2007Cours de compilation 1 - Intranet48 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... ! Indiquons linefficacité par * ! ! !Indiquons linefficacité par * ! ! ! L M* M Ce compilateur est rapide, mais le code produit nest pas bon !

49 19 septembre 2007Cours de compilation 1 - Intranet49 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... ! Indiquons linefficacité par * ! ! !Indiquons linefficacité par * ! ! ! L M* M L M M* L M* M* L M M

50 19 septembre 2007Cours de compilation 1 - Intranet50 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... ! Indiquons linefficacité par * ! ! !Indiquons linefficacité par * ! ! ! L M* M L M M* L M* M* L M M Il est lent, mais produit un bon résultat !

51 19 septembre 2007Cours de compilation 1 - Intranet51 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... ! Indiquons linefficacité par * ! ! !Indiquons linefficacité par * ! ! ! L M* M L M M* L M* M* L M M Il est lent et mauvais !

52 19 septembre 2007Cours de compilation 1 - Intranet52 Génération de nouveaux compilateurs Un bon compilateur travaille vite et bien !Un bon compilateur travaille vite et bien ! –La compilation est rapide ! –Le code compilé est rapide, efficace en mémoire,... ! Indiquons linefficacité par * ! ! !Indiquons linefficacité par * ! ! ! L M* M L M M* L M* M* L M M Il est bon !

53 19 septembre 2007Cours de compilation 1 - Intranet53 C H A N G E R D E L A N G A G E

54 19 septembre 2007Cours de compilation 1 - Intranet54 Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X !Sur la M-machine, construisons un bon compilateur pour le nouveau langage X !

55 19 septembre 2007Cours de compilation 1 - Intranet55 Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X !Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! Ecrire directement est très difficile !Ecrire directement est très difficile ! X M M

56 19 septembre 2007Cours de compilation 1 - Intranet56 Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X !Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! Ecrire directement est très difficile !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

57 19 septembre 2007Cours de compilation 1 - Intranet57 Génération de nouveaux compilateurs Sur la M-machine, construisons un bon compilateur pour le nouveau langage X !Sur la M-machine, construisons un bon compilateur pour le nouveau langage X ! Ecrire directement est très difficile !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

58 19 septembre 2007Cours de compilation 1 - Intranet58 Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs !Nous allons devoir combiner des compilateurs !

59 19 septembre 2007Cours de compilation 1 - Intranet59 Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs !Nous allons devoir combiner des compilateurs ! Ecrire est très facile !Ecrire est très facile ! X L L

60 19 septembre 2007Cours de compilation 1 - Intranet60 Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs !Nous allons devoir combiner des compilateurs ! Ecrire est très facile !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

61 19 septembre 2007Cours de compilation 1 - Intranet61 Génération de nouveaux compilateurs Nous allons devoir combiner des compilateurs !Nous allons devoir combiner des compilateurs ! Ecrire est très facile !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

62 19 septembre 2007Cours de compilation 1 - Intranet62 Génération de nouveaux compilateurs Dabord nous compilons le nouveau compilateur !Dabord nous compilons le nouveau compilateur !

63 19 septembre 2007Cours de compilation 1 - Intranet63 Génération de nouveaux compilateurs Dabord nous compilons le nouveau compilateur !Dabord nous compilons le nouveau compilateur ! L M M M-machine

64 19 septembre 2007Cours de compilation 1 - Intranet64 Génération de nouveaux compilateurs Dabord nous compilons le nouveau compilateur !Dabord nous compilons le nouveau compilateur ! L M M M-machine X L L

65 19 septembre 2007Cours de compilation 1 - Intranet65 Génération de nouveaux compilateurs Dabord nous compilons le nouveau compilateur !Dabord nous compilons le nouveau compilateur ! L M M M-machine X L L M Nous gardons un compilateur de X vers L ! Mais, il est maintenant écrit en M !

66 19 septembre 2007Cours de compilation 1 - Intranet66 Génération de nouveaux compilateurs Dabord nous compilons le nouveau compilateur !Dabord nous compilons le nouveau compilateur ! L M M M-machine En diagramme T ! X L L M

67 19 septembre 2007Cours de compilation 1 - Intranet67 Génération de nouveaux compilateurs Dabord nous compilons le nouveau compilateur !Dabord nous compilons le nouveau compilateur ! L M M M-machine En diagramme T ! X L L M Nous lavons rendu exécutable sur la M-machine ! ! !

68 19 septembre 2007Cours de compilation 1 - Intranet68 Génération de nouveaux compilateurs Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

69 19 septembre 2007Cours de compilation 1 - Intranet69 Génération de nouveaux compilateurs X L M Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

70 19 septembre 2007Cours de compilation 1 - Intranet70 Génération de nouveaux compilateurs L M M X L M Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

71 19 septembre 2007Cours de compilation 1 - Intranet71 Génération de nouveaux compilateurs L M M X L M Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

72 19 septembre 2007Cours de compilation 1 - Intranet72 Génération de nouveaux compilateurs L M M X L M M-machine Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

73 19 septembre 2007Cours de compilation 1 - Intranet73 Génération de nouveaux compilateurs L M M X L M M-machine Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

74 19 septembre 2007Cours de compilation 1 - Intranet74 Génération de nouveaux compilateurs L M M X L M M-machine Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

75 19 septembre 2007Cours de compilation 1 - Intranet75 Génération de nouveaux compilateurs L M M X L M M-machine X M* M Maintenant, nous chaînons les deux compilateurs !Maintenant, nous chaînons les deux compilateurs !

76 19 septembre 2007Cours de compilation 1 - Intranet76 Génération de nouveaux compilateurs La meilleure solution est la suivante !La meilleure solution est la suivante !

77 19 septembre 2007Cours de compilation 1 - Intranet77 Génération de nouveaux compilateurs La meilleure solution est la suivante !La meilleure solution est la suivante ! Ecrire est dune difficulté raisonnable !Ecrire est dune difficulté raisonnable ! X M L

78 19 septembre 2007Cours de compilation 1 - Intranet78 Génération de nouveaux compilateurs La meilleure solution est la suivante !La meilleure solution est la suivante ! Ecrire est dune difficulté raisonnable !Ecrire est dune difficulté raisonnable ! –La traduction de X vers M est difficile, sans plus. –La réaliser dans le langage L est raisonnable ! ! ! X M L

79 19 septembre 2007Cours de compilation 1 - Intranet79 Génération de nouveaux compilateurs La meilleure solution est la suivante !La meilleure solution est la suivante ! Ecrire est dune difficulté raisonnable !Ecrire est dune difficulté raisonnable ! –La traduction de X vers M est difficile, sans plus. –La réaliser dans le langage L est raisonnable ! ! ! X M L

80 19 septembre 2007Cours de compilation 1 - Intranet80 Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

81 19 septembre 2007Cours de compilation 1 - Intranet81 Génération de nouveaux compilateurs L M M M-machine Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

82 19 septembre 2007Cours de compilation 1 - Intranet82 Génération de nouveaux compilateurs L M M M-machine X M L Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

83 19 septembre 2007Cours de compilation 1 - Intranet83 Génération de nouveaux compilateurs L M M M-machine X M L M Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur !

84 19 septembre 2007Cours de compilation 1 - Intranet84 Génération de nouveaux compilateurs Il suffit de compiler le nouveau compilateur !Il suffit de compiler le nouveau compilateur ! L M M M-machine X M L M Ce compilateur est bon !

85 19 septembre 2007Cours de compilation 1 - Intranet85 C H A N G E R D E M A C H I N E

86 19 septembre 2007Cours de compilation 1 - Intranet86 Génération de nouveaux compilateurs Pour le langage L, autonome sur M, nous voulons construire un bon compilateur sur une nouvelle machine N !Pour le langage L, autonome sur M, nous voulons construire un bon compilateur sur une nouvelle machine N !

87 19 septembre 2007Cours de compilation 1 - Intranet87 Génération de nouveaux compilateurs Pour le langage L, autonome sur M, nous voulons construire un bon compilateur sur une nouvelle machine N !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 directement est très difficile ! L N N

88 19 septembre 2007Cours de compilation 1 - Intranet88 Génération de nouveaux compilateurs Pour le langage L, autonome sur M, nous voulons construire un bon compilateur sur une nouvelle machine N !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 directement est très difficile ! Ecrire est dune difficulté raisonnable !Ecrire est dune difficulté raisonnable ! L N N L

89 19 septembre 2007Cours de compilation 1 - Intranet89 Génération de nouveaux compilateurs Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur !

90 19 septembre 2007Cours de compilation 1 - Intranet90 Génération de nouveaux compilateurs Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur ! L M M M-machine

91 19 septembre 2007Cours de compilation 1 - Intranet91 Génération de nouveaux compilateurs Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur ! L M M M-machine L N L

92 19 septembre 2007Cours de compilation 1 - Intranet92 Génération de nouveaux compilateurs Nous compilons le nouveau compilateur !Nous compilons le nouveau compilateur ! L M M M-machine L N L M

93 19 septembre 2007Cours de compilation 1 - Intranet93 Gé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 M M M-machine L N L M

94 19 septembre 2007Cours de compilation 1 - Intranet94 Gé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 sexécute sur lancienne machine M L M M M-machine L N L M

95 19 septembre 2007Cours de compilation 1 - Intranet95 Gé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 sexécute sur lancienne machine M –et produit du code pour la nouvelle machine N. L M M M-machine L N L M

96 19 septembre 2007Cours de compilation 1 - Intranet96 Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à laide du cross-compilateur !Nous recompilons le nouveau compilateur, à laide du cross-compilateur !

97 19 septembre 2007Cours de compilation 1 - Intranet97 Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à laide du cross-compilateur !Nous recompilons le nouveau compilateur, à laide du cross-compilateur ! M-machine L N M

98 19 septembre 2007Cours de compilation 1 - Intranet98 Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à laide du cross-compilateur !Nous recompilons le nouveau compilateur, à laide du cross-compilateur ! M-machine L N M L

99 19 septembre 2007Cours de compilation 1 - Intranet99 Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à laide du cross-compilateur !Nous recompilons le nouveau compilateur, à laide du cross-compilateur ! Nous obtenons un bon compilateur pour L et autonome sur la machine N !Nous obtenons un bon compilateur pour L et autonome sur la machine N ! M-machine L N M L N

100 19 septembre 2007Cours de compilation 1 - Intranet100 Génération de nouveaux compilateurs Nous recompilons le nouveau compilateur, à laide du cross-compilateur !Nous recompilons le nouveau compilateur, à laide du cross-compilateur ! Nous obtenons un bon compilateur pour L et autonome sur la machine N !Nous obtenons un bon compilateur pour L et autonome sur la machine N ! M-machine L N M L N

101 19 septembre 2007Cours de compilation 1 - Intranet101 L E T A B L E A U C O M P L E T

102 19 septembre 2007Cours de compilation 1 - Intranet102 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet !

103 19 septembre 2007Cours de compilation 1 - Intranet103 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L M M M-machine Le matériel Le compilateur initial

104 19 septembre 2007Cours de compilation 1 - Intranet104 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L L M M M-machine Le matériel Le compilateur initial Le fichier source

105 19 septembre 2007Cours de compilation 1 - Intranet105 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N M L L M M M-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé

106 19 septembre 2007Cours de compilation 1 - Intranet106 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L L M M M-machine L N L Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le même fichier ! L N M

107 19 septembre 2007Cours de compilation 1 - Intranet107 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L L M M M-machine L N L Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N L N N Le même fichier ! L N M

108 19 septembre 2007Cours de compilation 1 - Intranet108 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L N L M M M-machine L N L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N Le même fichier ! L N M

109 19 septembre 2007Cours de compilation 1 - Intranet109 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L N L M M M-machine L N L L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N Le même fichier ! L N M

110 19 septembre 2007Cours de compilation 1 - Intranet110 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L N L M M M-machine L N L L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N Le même fichier ! L N N M

111 19 septembre 2007Cours de compilation 1 - Intranet111 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N L N L M M M-machine L N L L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N Le même fichier ! L N N Le test de régression : Le même exécutable ! L N M

112 19 septembre 2007Cours de compilation 1 - Intranet112 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N N L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N L N N Le test de régression : Le même exécutable !

113 19 septembre 2007Cours de compilation 1 - Intranet113 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N N L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N L N N Le test de régression : Le même exécutable ! Nous avons : un compilateur opérationnel,

114 19 septembre 2007Cours de compilation 1 - Intranet114 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N N L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N L N N Le test de régression : Le même exécutable ! Nous avons : un compilateur opérationnel, son fichier source,

115 19 septembre 2007Cours de compilation 1 - Intranet115 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N N L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N L N N Le test de régression : Le même exécutable ! Nous avons : un compilateur opérationnel, son fichier source, nous savons regénérer lexécutable.

116 19 septembre 2007Cours de compilation 1 - Intranet116 Génération de nouveaux compilateurs Le tableau complet !Le tableau complet ! L N N L N-machine Le matériel Le compilateur initial Le fichier source Le cross-compilateur créé Le compilateur de L sur N L N N Le test de régression : Le même exécutable ! Nous avons : un compilateur opérationnel, son fichier source, nous savons regénérer lexécutable.

117 19 septembre 2007Cours de compilation 1 - Intranet117 E N R E S U M E

118 19 septembre 2007Cours de compilation 1 - Intranet118 Génération de nouveaux compilateurs Construire un nouveau compilateur revient, dans la pratique, à écrire :Construire un nouveau compilateur revient, dans la pratique, à écrire : X M L

119 19 septembre 2007Cours de compilation 1 - Intranet119 Génération de nouveaux compilateurs Construire un nouveau compilateur revient, dans la pratique, à écrire :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 !Nous sommes obligés de décrire la traduction du langage évolué X vers le langage de bas niveau M ! X M L

120 19 septembre 2007Cours de compilation 1 - Intranet120 Génération de nouveaux compilateurs Construire un nouveau compilateur revient, dans la pratique, à écrire :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 !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 à laide du langage de haut niveau L !Cette traduction peut être décrite à laide du langage de haut niveau L ! X M L

121 19 septembre 2007Cours de compilation 1 - Intranet121 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

122 19 septembre 2007Cours de compilation 1 - Intranet122 Lenvironnement de compilation Compilation gcc

123 19 septembre 2007Cours de compilation 1 - Intranet123 Lenvironnement de compilation Compilation gcc Préprocessingcpp Nous nous occupons du sucre syntaxique : #include#define#ifdef... Nous réduisons ainsi la complexité du compilateur !

124 19 septembre 2007Cours de compilation 1 - Intranet124 Lenvironnement de compilation Compilation gcc Préprocessing Edition cpp emacs Les éditeurs comprennent déjà le langage et nous aident à éviter les fautes les plus grossières !

125 19 septembre 2007Cours de compilation 1 - Intranet125 Lenvironnement de compilation Compilation gcc Préprocessing Edition cpp emacs Assemblageasm Traduction dun langage assembleur symbolique vers le byte-code, insertion des bibliothèques statiques,... !

126 19 septembre 2007Cours de compilation 1 - Intranet126 Lenvironnement de compilation Compilation gcc Préprocessing Edition cpp emacs Assemblage Chargement asm ld Installation en mémoire, allocation des zones mémoire, édition des liens et bibliothèques dynamiques,... !

127 19 septembre 2007Cours de compilation 1 - Intranet127 Lenvironnement de compilation Compilation gcc Préprocessing Edition cpp emacs Assemblage Chargement asm ld Succession chronologique !

128 19 septembre 2007Cours de compilation 1 - Intranet128 Lenvironnement de compilation En plus :En plus :

129 19 septembre 2007Cours de compilation 1 - Intranet129 Lenvironnement de compilation En plus :En plus : –Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre,... ) !Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre,... ) !

130 19 septembre 2007Cours de compilation 1 - Intranet130 Lenvironnement de compilation En plus :En plus : –Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre,... ) !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 laccès concurrent !Ils gèrent les versions des sources et laccès concurrent !

131 19 septembre 2007Cours de compilation 1 - Intranet131 Lenvironnement de compilation En plus :En plus : –Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre,... ) !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 laccès concurrent !Ils gèrent les versions des sources et laccès concurrent ! –Des outils comme « make » ou « imake » ! Ils automatisent les compilations séparées et partielles !Ils automatisent les compilations séparées et partielles !

132 19 septembre 2007Cours de compilation 1 - Intranet132 Lenvironnement de compilation En plus :En plus : –Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre,... ) !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 laccès concurrent !Ils gèrent les versions des sources et laccès concurrent ! –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 » ! Ils contrôlent lexécution, larrêt sur erreur,... !Ils contrôlent lexécution, larrêt sur erreur,... !

133 19 septembre 2007Cours de compilation 1 - Intranet133 Lenvironnement de compilation En plus :En plus : –Des vérificateurs de syntaxe comme « lint » ! Plus exigeants que le compilateur (cast risqués, portabilité douteuse, code pas propre,... ) !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 laccès concurrent !Ils gèrent les versions des sources et laccès concurrent ! –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 » ! Ils contrôlent lexécution, larrêt sur erreur,... !Ils contrôlent lexécution, larrêt sur erreur,... !

134 19 septembre 2007Cours de compilation 1 - Intranet134 Résumé Définitions de base Définitions de base Composition de compilateurs Composition de compilateurs Lenvironnement dun compilateur Lenvironnement dun compilateur

135 19 septembre 2007Cours de compilation 1 - Intranet135 C e S t L a F i N ! ! ! b O n N e J o U r N é E ! ! !


Télécharger ppt "19 septembre 2007Cours de compilation 1 - Intranet1 Marc Gengler Cours de compilation 18h de cours avec un peu de TD un projet."

Présentations similaires


Annonces Google