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

Slides:



Advertisements
Présentations similaires
Présentation générale Marc Gengler
Advertisements

Rappels C.
Introduction au langage C
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Analyse syntaxique (intro)
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut.
Quelques applications.
9 octobre 2007Cours de compilation 5 - Intranet1 Cours de compilation Techniques danalyse ascendantes.
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.
Cours d’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
Cours de compilation 2 - Intranet
Cours de graphes Les plus courts chemins,
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
21 septembre 2007Cours de compilation 2 - Intranet1 Cours de compilation Evaluation partielle etcompilation.
Analyse syntaxique (intro)
Cours d’Algorithmique
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
la programmation en langage C
C.
Introduction : Compilation et Traduction
Cours d’Algorithmique
Cours d'algorithmique 2 - Intranet 1 8 novembre 2006 Cours dAlgorithmique Listes, piles et files. Arbres. Types de données abstraits. Implantations.
Cours d’Algorithmique
Les Ateliers de Génie Logiciel
Langage C Licence Informatique 3ème année
Introduction : Compilation et Traduction
Cours d’Algorithmique
Démarche de résolution de problèmes
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Problème des 4 couleurs, graphes planaires.
Quelques applications.
Quelques graphes particuliers.
Cours de graphes Les arbres et arborescences.
Des outils pour le développement logiciel
Introduction à la programmation (Java)
16 mars 2007Cours de graphes 7 - Intranet1 Cours de graphes Problèmes NP-complets. Réductions polynômiales.
Bases de la programmation en C++
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
CSI3525: Concepts des Languages de Programmation
Amorçage des compilateurs Un compilateur est un programme écrit dans un langage Peut-il être écrit dans le langage cible ? dans le langage source ? comment.
Les systèmes multiplateformes
Partie II Sémantique.
Séance d’introduction
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Cours de graphes 6 - Intranet
23 février 2007Cours de graphes 4 - Intranet1 Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut. Algos de Ford-Fulkerson et Edmonds-Karp.
Programmer en langage c
Programmation Système et Réseau (sous Linux)
Cours Architecture des Systèmes Informatiques
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Patricia Renault UPMC 2005/2006
Introduction à la compilation
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

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

Marc Gengler Marc.Gengler@esil.univ-mrs.fr Cours de compilation Marc Gengler Marc.Gengler@esil.univ-mrs.fr 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cours de compilation 1 - Intranet Chaînage de compilateurs ---------------------------------------------------------------- C1 C2 19 septembre 2007 Cours de compilation 1 - Intranet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cours de compilation 1 - Intranet L’environnement de compilation ---------------------------------------------------------------- Compilation gcc 19 septembre 2007 Cours de compilation 1 - Intranet

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

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

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

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

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

Cours de compilation 1 - Intranet L’environnement de compilation ---------------------------------------------------------------- En plus : 19 septembre 2007 Cours de compilation 1 - Intranet

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

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

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

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

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

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

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