Intro
Transcript of Intro
-
Annie Corbel 1999 1
Compilation
Un compilateur traduit un programme crit enlangage source en un programme quivalentcrit en langage cible ou objet
Programme source Programme cible
messagesd'erreur
listing
compilateur
-
Annie Corbel 1999 2
Langage cible : langage machine
assembleur
langage intermdiaire (triplets, quadruplets, pr oupost fix, ...)
Notation rencontre :
lang. source lang. cible
lang.d'crituredu compil.
Pascal ASM
C
-
Annie Corbel 1999 3
Un interprte excute directement unprogramme crit en langage source :
Programme source
messagesd'erreur
rsultats
interprte
donnes lang.source
lang.d'criturede l'interp.
-
Annie Corbel 1999 4
Compilation de compilateurs
Pascal ASM
C
LM Mac
C
C LM Sun
LM Sun
Pascal ASM
LM Sun
C LM Sun
LM Sun
LM Mac
LM Sun
(excutable de SIM)
-
Annie Corbel 1999 5
Qualits d'un compilateur
Correction : le programme cible est quivalent auprogramme source
Rapidit (temps de compilation proportionnel la tailledu programme)
Production de code de bonne qualit : les programmesproduits doivent tre efficaces en temps et en espace
Bons diagnostiques d'erreur
Possibilit d'utiliser un debugger sur le code produit
-
Annie Corbel 1999 6
Autour du compilateurprprocesseur
compilateur
gnrateur code
diteur de liens
chargeur
expansion des macros, ex : cpp et #
recherche des librairies
langage source
langage cible
code machine translatable
code machine absolu
-
Annie Corbel 1999 7
Structure d'un compilateur
Phases d'analyse du texte source analyse lexicale
analyse syntaxique
analyse smantique
Phases de synthse (gnration du programme cible) gnration du code intermdiaire
optimisation du code intermdiaire
gnration du code cible
Table des symboles (ident. utiliss et leurs attributs)
fron
tale
fina
le
-
Annie Corbel 1999 8
reprsentationintermdiaire
codecible
codesource
erreurs
partiefrontale
partiefinale
dpendant du langage source
indpendant du code cible
indpendant du langage source
dpendant du code cible
TS
-
Annie Corbel 1999 9
Analyse lexicale : exemple
Analyse linaire du texte source.
Dcoupe les caractres en "lexemes" et rend des"tokens"
ex : pas :=init+vitesse*60 caract
ident ident ident nbremultgal plus tokens
lexemes
-
Annie Corbel 1999 10
Analyse syntaxique : exemplepas :=init+vitesse*60
regroupe les lexemes en utilisant les rgles degrammaire -> arbre syntaxique
affectation::= ident := expr::= +| term::=*|facteur::=ident|entier
affectation
ident expr
expr term+
termterm
facteur
* ident
facteur
:=
ident entier
-
Annie Corbel 1999 11
Analyse smantique : exemplepas :=init+vitesse*60
vrifie que cela a un sens les oprandes sont-ils de mme type?
60 est un entier et vitesse est un rel
60 devra tre converti en rel
les oprateurs sont de quel type?* et + seront des oprations sur rels
pas est-il une variable modifiable?
-
Annie Corbel 1999 12
Gnration du code intermdiaire :exemple : pas :=init+vitesse*60
ex : code 3 adresses temp1
-
Annie Corbel 1999 13
Optimisation : exemple pas :=init+vitesse*60
temp1
-
Annie Corbel 1999 14
Gnration de code : exemple pas :=init+vitesse*60
temp1