SlideShare une entreprise Scribd logo
1  sur  3
Télécharger pour lire hors ligne
Chapitre 1
Introduction à la compilation
1.1 Motivation
La compilation est l'un des maillons de la chaine de développement d'un programme in-
formatique (voir Figure 1).
Au début de l'aire informatique, on n'avait pas besoin de la compilation car les tous pre-
miers langages de programmation (langage A-0, langage assembleur) étaient très proches
du langage machine. Il susait donc d'appliquer de simples algorithmes de transcodage
pour avoir un programme exécutable. Depuis, les langages de programmation n'ont cessés
d'évoluer, et on parle désormais de langage de haut niveau.
La compilation est née de la complexité de la tache qui consiste de passer d'un pro-
gramme écrit dans un langage de haut niveau vers un programme exécutable. Cette tâche
est réalisée par un programme informatique appelé compilateur.
1.2 Compilateur
Un compilateur est un programme particulier qui lit un programme écrit dans un langage
source et le traduit en un programme écrit dans un langage cible (voir Figure 2).
Au cours du processus de compilation, l'un des rôles importants des compilateurs est
de signaler à l'utilisateur la présence d'erreurs dans le programme source.
Exemples : Compilateur de
 C vers langage machine ;
 C++ vers C ;
 JAVA vers C++ ;
 Matlab vers JAVA ;
 Word vers html ;
 Latex vers PDF ;
1
2 CHAPITRE 1. INTRODUCTION À LA COMPILATION
Figure 1.1  Chaine de développement d'un programme informatique.
Figure 1.2  Rôle du compilateur.
1.3 Phases de la compilation
Le processus de compilation se déroule en deux grandes étapes : l'étape d'analyse du
programme source et l'étape de la synthèse du programme cible.
1.3.1 L'analyse du programme source
Cette étape partitionne le programme source en plusieurs constituants et en crée une re-
présentation intermédiaire.
L'analyse comprend trois phases :
1. L'analyse lexicale, où le ot de caractères formant le programme source est lu de
gauche à droite et groupé en unités lexicales qui sont des suites de caractères ayant
une signication collective. Cette phase répond à la question : est-ce que les mots
qui existent dans le programme source sont corrects ?
1.3. PHASES DE LA COMPILATION 3
2. L'analyse syntaxique : cette phase permet de dire si la séquence des mots résultant
de l'analyse lexicale forme bien des phrases cohérentes. Si oui, ces unités lexicales se-
ront groupées hiérarchiquement dans des structures imbriquées, ( arbre syntaxique),
ayant une signication collective.
3. L'analyse sémantique : au cours de cette phase, on opère certains contrôles pour
s'assurer que l'assemblage des constituants d'un programme a un sens. La phase
d'analyse sémantique répond, entre autres, aux questions : Est-ce que les opérandes
de toutes les opérations sont correctes (types), faut-il faire une conversion, est-ce que
les indices d'un tableau sont corrects. Si oui, le compilateur extrait un programme
écrit dans un autre langage.
1.3.2 La synthèse du programme cible
Cette étape construit le programme cible désiré à partir de la représentation intermédiaire
générée dans l'étape d'analyse. La synthèse se compose de trois phases :
1. Génération du code intermédiaire : on peut considérer le code intermédiaire comme
un programme pour une machine qui a une innité de registres. Cette représentation
doit avoir deux propriétés importantes : elle doit être facile à produire à partir de
l'arbre syntaxique et facile à traduire en langage cible.
2. Optimisation du code : cette phase tente d'améliorer le code intermédiaire de façon
que le code machine résultant s'exécute plus rapidement.
3. Génération du code cible : la génération du code cible est l'étape du processus de
compilation transformant l'arbre syntaxique (enrichi d'informations sémantiques)
en code machine pour la machine cible. La phase de génération de code cible inclut
généralement :
 Le choix des instructions à émettre.
 L'ordonnancement des instructions en vue d'accélérer l'exécution
 l'allocation de registres : l'allocation des variables aux registres du processeur.

Contenu connexe

Similaire à Chap1compil

Algorithme et Programmation
Algorithme et ProgrammationAlgorithme et Programmation
Algorithme et ProgrammationMonssifNajim1
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfRedaBelattar
 
Cours langage C et C++
Cours langage C et C++Cours langage C et C++
Cours langage C et C++mohamednacim
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaRached Krim
 
projet_prog5.pptx
projet_prog5.pptxprojet_prog5.pptx
projet_prog5.pptxayoubdj19
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
Algorithme et programmation.pdf
Algorithme et programmation.pdfAlgorithme et programmation.pdf
Algorithme et programmation.pdfGhassenHaamdi
 
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcoursedu
 

Similaire à Chap1compil (20)

Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Algorithme et Programmation
Algorithme et ProgrammationAlgorithme et Programmation
Algorithme et Programmation
 
Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Chapitre 1
Chapitre 1Chapitre 1
Chapitre 1
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
algo & prog python.pptx
algo & prog python.pptxalgo & prog python.pptx
algo & prog python.pptx
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
Cours langage C et C++
Cours langage C et C++Cours langage C et C++
Cours langage C et C++
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
projet_prog5.pptx
projet_prog5.pptxprojet_prog5.pptx
projet_prog5.pptx
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Algorithme et programmation.pdf
Algorithme et programmation.pdfAlgorithme et programmation.pdf
Algorithme et programmation.pdf
 
Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 

Chap1compil

  • 1. Chapitre 1 Introduction à la compilation 1.1 Motivation La compilation est l'un des maillons de la chaine de développement d'un programme in- formatique (voir Figure 1). Au début de l'aire informatique, on n'avait pas besoin de la compilation car les tous pre- miers langages de programmation (langage A-0, langage assembleur) étaient très proches du langage machine. Il susait donc d'appliquer de simples algorithmes de transcodage pour avoir un programme exécutable. Depuis, les langages de programmation n'ont cessés d'évoluer, et on parle désormais de langage de haut niveau. La compilation est née de la complexité de la tache qui consiste de passer d'un pro- gramme écrit dans un langage de haut niveau vers un programme exécutable. Cette tâche est réalisée par un programme informatique appelé compilateur. 1.2 Compilateur Un compilateur est un programme particulier qui lit un programme écrit dans un langage source et le traduit en un programme écrit dans un langage cible (voir Figure 2). Au cours du processus de compilation, l'un des rôles importants des compilateurs est de signaler à l'utilisateur la présence d'erreurs dans le programme source. Exemples : Compilateur de C vers langage machine ; C++ vers C ; JAVA vers C++ ; Matlab vers JAVA ; Word vers html ; Latex vers PDF ; 1
  • 2. 2 CHAPITRE 1. INTRODUCTION À LA COMPILATION Figure 1.1 Chaine de développement d'un programme informatique. Figure 1.2 Rôle du compilateur. 1.3 Phases de la compilation Le processus de compilation se déroule en deux grandes étapes : l'étape d'analyse du programme source et l'étape de la synthèse du programme cible. 1.3.1 L'analyse du programme source Cette étape partitionne le programme source en plusieurs constituants et en crée une re- présentation intermédiaire. L'analyse comprend trois phases : 1. L'analyse lexicale, où le ot de caractères formant le programme source est lu de gauche à droite et groupé en unités lexicales qui sont des suites de caractères ayant une signication collective. Cette phase répond à la question : est-ce que les mots qui existent dans le programme source sont corrects ?
  • 3. 1.3. PHASES DE LA COMPILATION 3 2. L'analyse syntaxique : cette phase permet de dire si la séquence des mots résultant de l'analyse lexicale forme bien des phrases cohérentes. Si oui, ces unités lexicales se- ront groupées hiérarchiquement dans des structures imbriquées, ( arbre syntaxique), ayant une signication collective. 3. L'analyse sémantique : au cours de cette phase, on opère certains contrôles pour s'assurer que l'assemblage des constituants d'un programme a un sens. La phase d'analyse sémantique répond, entre autres, aux questions : Est-ce que les opérandes de toutes les opérations sont correctes (types), faut-il faire une conversion, est-ce que les indices d'un tableau sont corrects. Si oui, le compilateur extrait un programme écrit dans un autre langage. 1.3.2 La synthèse du programme cible Cette étape construit le programme cible désiré à partir de la représentation intermédiaire générée dans l'étape d'analyse. La synthèse se compose de trois phases : 1. Génération du code intermédiaire : on peut considérer le code intermédiaire comme un programme pour une machine qui a une innité de registres. Cette représentation doit avoir deux propriétés importantes : elle doit être facile à produire à partir de l'arbre syntaxique et facile à traduire en langage cible. 2. Optimisation du code : cette phase tente d'améliorer le code intermédiaire de façon que le code machine résultant s'exécute plus rapidement. 3. Génération du code cible : la génération du code cible est l'étape du processus de compilation transformant l'arbre syntaxique (enrichi d'informations sémantiques) en code machine pour la machine cible. La phase de génération de code cible inclut généralement : Le choix des instructions à émettre. L'ordonnancement des instructions en vue d'accélérer l'exécution l'allocation de registres : l'allocation des variables aux registres du processeur.