166
Chapitre 4 : Introduction ` a la compilation Prof. Abdelmajid Dargham Facult´ e des Sciences, Oujda Fili` ere SMI - S4 Module Th´ eorie des langages & Compilation Universit´ e Mohamed Premier Septembre, 2012

Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

  • Upload
    others

  • View
    47

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Chapitre 4 :

Introduction a la compilation

Prof. Abdelmajid DarghamFaculte des Sciences, Oujda

Filiere SMI - S4

Module Theorie des langages & Compilation

Universite Mohamed Premier

Septembre, 2012

Page 2: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 3: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 4: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 5: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 6: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 7: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 8: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Sommaire du chapitre 4

Pourquoi la compilation ?

Notion de compilation

Environnement d’un compilateur

La pahse d’analyse

La phase de synthese

Schema global d’un compilateur

Caracteristiques d’un bon compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 9: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

La compilation est tres importante, car :

1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).

2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.

3 s’afranchir de la machine utilisee : programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 10: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

La compilation est tres importante, car :

1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).

2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.

3 s’afranchir de la machine utilisee : programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 11: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

La compilation est tres importante, car :

1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).

2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.

3 s’afranchir de la machine utilisee : programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 12: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

La compilation est tres importante, car :

1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).

2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.

3 s’afranchir de la machine utilisee : programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 13: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

La compilation est tres importante, car :

1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).

2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.

3 s’afranchir de la machine utilisee : programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 14: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Les techniques de compilation ne servent pas qu’a creerdes compilateurs.

Elles sont tres utiles dans d’autres domaines, parmilesquels :

1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.

2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 15: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Les techniques de compilation ne servent pas qu’a creerdes compilateurs.

Elles sont tres utiles dans d’autres domaines, parmilesquels :

1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.

2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 16: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Les techniques de compilation ne servent pas qu’a creerdes compilateurs.

Elles sont tres utiles dans d’autres domaines, parmilesquels :

1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.

2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 17: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Les techniques de compilation ne servent pas qu’a creerdes compilateurs.

Elles sont tres utiles dans d’autres domaines, parmilesquels :

1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.

2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 18: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Les techniques de compilation ne servent pas qu’a creerdes compilateurs.

Elles sont tres utiles dans d’autres domaines, parmilesquels :

1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.

2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 19: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 20: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 21: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 22: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.

2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 23: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.

3 la theorie des langages formels : automates finis,expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 24: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 25: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.

5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 26: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Pourquoi la compilation ?

Utilite de la compilation

Un cours de compilation est tres riche en matiere deconnaissance.

La compilation touche plusieurs domaines :

1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,

expressions regulieres, grammaires hors-contexte,automates a pile.

4 l’algorithmique.5 le genie logiciel.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 27: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Definition 1.1

Un compilateur est un programme qui :

lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).

Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 28: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Definition 1.1

Un compilateur est un programme qui :

lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).

Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 29: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Definition 1.1

Un compilateur est un programme qui :

lit un programme ecrit dans un premier langage (lelangage source),

et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).

Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 30: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Definition 1.1

Un compilateur est un programme qui :

lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).

Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 31: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Definition 1.1

Un compilateur est un programme qui :

lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).

Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 32: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Figure: Schema simplifie d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 33: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Figure: Schema simplifie d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 34: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Le processus de compilation s’effectue en generale endeux grandes phases :

1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.

2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.

La theorie des langages intervient au niveau de la phased’analyse.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 35: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Le processus de compilation s’effectue en generale endeux grandes phases :

1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.

2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.

La theorie des langages intervient au niveau de la phased’analyse.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 36: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Le processus de compilation s’effectue en generale endeux grandes phases :

1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.

2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.

La theorie des langages intervient au niveau de la phased’analyse.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 37: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Le processus de compilation s’effectue en generale endeux grandes phases :

1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.

2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.

La theorie des langages intervient au niveau de la phased’analyse.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 38: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Le processus de compilation s’effectue en generale endeux grandes phases :

1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.

2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.

La theorie des langages intervient au niveau de la phased’analyse.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 39: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 40: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 41: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 42: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 43: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.

2 l’analyse syntaxique.3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 44: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.2 l’analyse syntaxique.

3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 45: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Chaque phase contient un certain nombre d’etapes (oumodules).

La sortie d’un module est l’entree du module suivant.

Les modules de la phase d’analyse sont :

1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 46: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Les modules de la phase de synthese sont :

1 la generation de code intermediaire.2 l’optimisation du code intermediaire.3 la generation du code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 47: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Les modules de la phase de synthese sont :

1 la generation de code intermediaire.2 l’optimisation du code intermediaire.3 la generation du code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 48: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Les modules de la phase de synthese sont :

1 la generation de code intermediaire.

2 l’optimisation du code intermediaire.3 la generation du code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 49: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Les modules de la phase de synthese sont :

1 la generation de code intermediaire.2 l’optimisation du code intermediaire.

3 la generation du code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 50: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Notion de compilation

Les phases de la compilation

Les modules de la phase de synthese sont :

1 la generation de code intermediaire.2 l’optimisation du code intermediaire.3 la generation du code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 51: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 52: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 53: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 54: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.

2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 55: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.

3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 56: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 57: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 58: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.

2 le debogeur : pour chercher les bougues et en proposerdes solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 59: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.

L’environnement d’un compilateur inclue principalement :

1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.

D’autres elements sont egalement utiles comme :

1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer

des solutions.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 60: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le pre-processeur

Un programme source peut etre divise en modules stockesdans des fichiers separes.

La tache consistant a reconstruire le programme sourceest parfois confie a un programme special, appelepre-processeur.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 61: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le pre-processeur

Un programme source peut etre divise en modules stockesdans des fichiers separes.

La tache consistant a reconstruire le programme sourceest parfois confie a un programme special, appelepre-processeur.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 62: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le pre-processeur

Un programme source peut etre divise en modules stockesdans des fichiers separes.

La tache consistant a reconstruire le programme sourceest parfois confie a un programme special, appelepre-processeur.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 63: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Taches realisees par un pre-processeur

1 Macro-expansion : definition de ”marcos-definitions”ou plus simplement ”macros”.

Exemple en C : #define MAX 1002 Inclusion de fichiers : inclusion d’en-tetes dans le texte

d’un programme.Exemple en C : #include <stdio.h>

3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 64: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”

ou plus simplement ”macros”.

Exemple en C : #define MAX 1002 Inclusion de fichiers : inclusion d’en-tetes dans le texte

d’un programme.Exemple en C : #include <stdio.h>

3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 65: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”

ou plus simplement ”macros”.Exemple en C : #define MAX 100

2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.

Exemple en C : #include <stdio.h>

3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 66: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”

ou plus simplement ”macros”.Exemple en C : #define MAX 100

2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.

Exemple en C : #include <stdio.h>

3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 67: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”

ou plus simplement ”macros”.Exemple en C : #define MAX 100

2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.

Exemple en C : #include <stdio.h>

3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 68: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”

ou plus simplement ”macros”.Exemple en C : #define MAX 100

2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.

Exemple en C : #include <stdio.h>

3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 69: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleur

Le compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 70: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.

Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 71: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 72: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 73: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2

MOVE a, R1ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 74: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1

ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 75: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1ADD #2, R1

MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 76: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.

Exemples 1.2

b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 77: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Quelques definitions

Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.

Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.

Code machine absolu : code machine non translatable.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 78: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Quelques definitions

Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.

Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.

Code machine absolu : code machine non translatable.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 79: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Quelques definitions

Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.

Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.

Code machine absolu : code machine non translatable.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 80: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Quelques definitions

Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.

Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.

Code machine absolu : code machine non translatable.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 81: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur-chargeur

Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.

Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.

Cette operation est aussi appelee edition de lien.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 82: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur-chargeur

Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.

Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.

Cette operation est aussi appelee edition de lien.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 83: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur-chargeur

Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.

Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.

Cette operation est aussi appelee edition de lien.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 84: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur-chargeur

Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.

Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.

Cette operation est aussi appelee edition de lien.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 85: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le chargeur

Le chargement consiste a prendre du code machinetranslatable, a modifier les adresses translatables et aplacer les instructions et les donnees ainsi modifiees enmemoire, aux emplacements appropriees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 86: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le chargeur

Le chargement consiste a prendre du code machinetranslatable, a modifier les adresses translatables et aplacer les instructions et les donnees ainsi modifiees enmemoire, aux emplacements appropriees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 87: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur

Le relieur permet de constituer un unique programme apartir de plusieurs fichiers contenant du code machinetranslatable.

Ces fichiers peuvent avoir ete produits par plusieurscompilations separees, et un ou plusieurs d’entre euxpeuvent etre des fichiers ou des routines de bibliotheque,fournis par le systeme et displonibles pour toutprogramme qui en a besoin.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 88: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur

Le relieur permet de constituer un unique programme apartir de plusieurs fichiers contenant du code machinetranslatable.

Ces fichiers peuvent avoir ete produits par plusieurscompilations separees, et un ou plusieurs d’entre euxpeuvent etre des fichiers ou des routines de bibliotheque,fournis par le systeme et displonibles pour toutprogramme qui en a besoin.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 89: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Le relieur

Le relieur permet de constituer un unique programme apartir de plusieurs fichiers contenant du code machinetranslatable.

Ces fichiers peuvent avoir ete produits par plusieurscompilations separees, et un ou plusieurs d’entre euxpeuvent etre des fichiers ou des routines de bibliotheque,fournis par le systeme et displonibles pour toutprogramme qui en a besoin.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 90: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Figure: Schema de l’environnement d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 91: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Environnement d’un compilateur

Figure: Schema de l’environnement d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 92: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 93: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 94: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;

un mot cle;un caractere de ponctuation;un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 95: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;un mot cle;

un caractere de ponctuation;un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 96: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;un mot cle;un caractere de ponctuation;

un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 97: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 98: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse lexicale (scanning)

L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :

un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.

La suite de caracteres composant une unite lexicale estappelee lexeme.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 99: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

Figure: Analyse lexicale d’une instruction

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 100: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

Figure: Analyse lexicale d’une instruction

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 101: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 102: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 103: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 104: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;

une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 105: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;

une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 106: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;

un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 107: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 108: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse syntaxique (parsing)

L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.

Une unite syntaxique reflete une construction du langagesource, par exemple :

une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.

Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 109: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

Figure: Analyse syntaxique d’une instruction

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 110: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

Figure: Analyse syntaxique d’une instruction

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 111: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle entre autres :

1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 112: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle entre autres :

1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 113: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle entre autres :

1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 114: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle entre autres :

1 le typage;

2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 115: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle entre autres :

1 le typage;2 le flot d’execution : branchements apres un break;

3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 116: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase d’analyse

L’analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle entre autres :

1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 117: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 118: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 119: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 120: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 121: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.

AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 122: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 123: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 124: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 125: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 126: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 127: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20

temp2 := c ∗ temp1temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 128: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1

temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 129: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2

a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 130: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code intermediaire

Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.

Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.

Exemples 1.3

temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 131: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

L’optimisation de code intermediaire

L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Exemples 1.4

Le code precedent est optimise ainsi :

temp1 := c ∗ 20a := b + temp1

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 132: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

L’optimisation de code intermediaire

L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Exemples 1.4

Le code precedent est optimise ainsi :

temp1 := c ∗ 20a := b + temp1

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 133: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

L’optimisation de code intermediaire

L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Exemples 1.4

Le code precedent est optimise ainsi :

temp1 := c ∗ 20a := b + temp1

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 134: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

L’optimisation de code intermediaire

L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Exemples 1.4

Le code precedent est optimise ainsi :

temp1 := c ∗ 20a := b + temp1

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 135: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

L’optimisation de code intermediaire

L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Exemples 1.4

Le code precedent est optimise ainsi :

temp1 := c ∗ 20

a := b + temp1

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 136: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

L’optimisation de code intermediaire

L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Exemples 1.4

Le code precedent est optimise ainsi :

temp1 := c ∗ 20a := b + temp1

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 137: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.

Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.

Un aspect crucial de ce processus est l’assignation devariables aux registres.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 138: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.

Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.

Un aspect crucial de ce processus est l’assignation devariables aux registres.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 139: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.

Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.

Un aspect crucial de ce processus est l’assignation devariables aux registres.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 140: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.

Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.

Un aspect crucial de ce processus est l’assignation devariables aux registres.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 141: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.

Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.

Un aspect crucial de ce processus est l’assignation devariables aux registres.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 142: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 143: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 144: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 145: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2

MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 146: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2

MOVE b, R1ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 147: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2MOVE b, R1

ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 148: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1

MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 149: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

La phase de synthese

La generation de code cible

Exemples 1.5

Le code optimise est traduit en langage d’assemblage.

On utilise les registres effectifs de la machine.

MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 150: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 151: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 152: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 153: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 154: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 155: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 156: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.

Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.

La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.

Un enregistrement de la table des symboles contient uncertain nombre d’attributs.

Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.

Cette fonction est assuree par un module appelegsetionnaire des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 157: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 158: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Schema global d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 159: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 160: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 161: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 162: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 163: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 164: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 165: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 166: Chapitre 4 : Introduction à la compilationChapitre 4 : Introduction `a la compilation Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S4 Module Th´eorie des

Caracteristiques d’un bon compilateur

1 Le code cible produit doit etre correct.

2 Le code produit est bien optimise.

3 L’executable est rapide.

4 Le processus de compilation est rapide.

5 Permettre la compilation separee.

6 Avoir un tres bon debogueur.

7 Detecter le plus grand nombre possible des erreurssemantiques.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation