Vous êtes sur la page 1sur 3

Chapitre 1

Introduction la compilation
1.1

Motivation

La compilation est l'un des maillons de la chaine de dveloppement d'un programme informatique (voir Figure 1).
Au dbut de l'aire informatique, on n'avait pas besoin de la compilation car les tous premiers langages de programmation (langage A-0, langage assembleur) taient trs proches
du langage machine. Il susait donc d'appliquer de simples algorithmes de transcodage
pour avoir un programme excutable. Depuis, les langages de programmation n'ont cesss
d'voluer, et on parle dsormais de langage de haut niveau.
La compilation est ne de la complexit de la tache qui consiste de passer d'un programme crit dans un langage de haut niveau vers un programme excutable. Cette tche
est ralise 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 rles importants des compilateurs est
de signaler l'utilisateur la prsence d'erreurs dans le programme source.

Compilateur de
C vers langage machine ;
C++ vers C ;
JAVA vers C++ ;
Matlab vers JAVA ;
Word vers html ;
Latex vers PDF ;

Exemples :








CHAPITRE 1.

INTRODUCTION LA COMPILATION

Figure 1.1  Chaine de dveloppement d'un programme informatique.

Figure 1.2  Rle du compilateur.


1.3

Phases de la compilation

Le processus de compilation se droule en deux grandes tapes : l'tape d'analyse du


programme source et l'tape de la synthse du programme cible.
1.3.1

L'analyse du programme source

Cette tape partitionne le programme source en plusieurs constituants et en cre une reprsentation intermdiaire.
L'analyse comprend trois phases :
1. L'analyse lexicale, o le ot de caractres formant le programme source est lu de
gauche droite et group en units lexicales qui sont des suites de caractres ayant
une signication collective. Cette phase rpond la question : est-ce que les mots
qui existent dans le programme source sont corrects ?

1.3.

PHASES DE LA COMPILATION

2. L'analyse syntaxique : cette phase permet de dire si la squence des mots rsultant
de l'analyse lexicale forme bien des phrases cohrentes. Si oui, ces units lexicales seront groupes hirarchiquement dans des structures imbriques, ( arbre syntaxique ),
ayant une signication collective.
3. L'analyse smantique : au cours de cette phase, on opre certains contrles pour
s'assurer que l'assemblage des constituants d'un programme a un sens. La phase
d'analyse smantique rpond, entre autres, aux questions : Est-ce que les oprandes
de toutes les oprations 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 synthse du programme cible

Cette tape construit le programme cible dsir partir de la reprsentation intermdiaire


gnre dans l'tape d'analyse. La synthse se compose de trois phases :
1. Gnration du code intermdiaire : on peut considrer le code intermdiaire comme
un programme pour une machine qui a une innit de registres. Cette reprsentation
doit avoir deux proprits 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'amliorer le code intermdiaire de faon
que le code machine rsultant s'excute plus rapidement.
3. Gnration du code cible : la gnration du code cible est l'tape du processus de
compilation transformant l'arbre syntaxique (enrichi d'informations smantiques)
en code machine pour la machine cible. La phase de gnration de code cible inclut
gnralement :
 Le choix des instructions mettre.
 L'ordonnancement des instructions en vue d'acclrer l'excution
 l'allocation de registres : l'allocation des variables aux registres du processeur.