Академический Документы
Профессиональный Документы
Культура Документы
http://www.brunodelb.com
Date : 12/11/1997
Compilation
Sommaire
ASSEMBLEUR..............................................................................................................3
RFRENCE AVANT..........................................................................................................3
Deux passes...........................................................................................................3
Une passe...............................................................................................................3
ETAPES.......................................................................................................................4
ALLOCATION..................................................................................................................4
SUBSTITUTION...............................................................................................................4
GNRATION.................................................................................................................4
PLACE LES VARIABLES UTILISES DANS DES REGISTRES...............................................................4
LES TYPES DE LANGAGE..............................................................................................5
LANGAGE
LANGAGE
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
REPRISE SUR ERREUR.....................................................................................................12
Actions smantiques..............................................................................................12
Exemple...............................................................................................................12
Format.................................................................................................................13
But.......................................................................................................................13
Inconvnients.......................................................................................................13
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
Assembleur
Rfrence avant
Deux passes
Le premier parcours constitue la table des symboles et traduit les codesoprations.
Le deuxime parcours remplit les parties adresses des instructions.
Une passe
Si l'assembleur rencontre un identificateur inexistant dans la table des
symboles, il l'installe tout de mme dans la table et lui affecte une liste
d'attente. Il existe donc encore dans le texte objet des instructions
incompltes.
Les langages volus travaillent en une seule passe.
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
Etapes
Allocation
Elle dtermine pour chaque objet du dictionnaire une adresse relative au
dbut du programme objet.
Le compilateur doit engendrer en liste d'instructions symboliques des appels
une allocation d'espace mmoire.
Substitution
Substitue les pointeurs de la liste d'instructions symbolique par des adresses
dans le texte-objet.
Gnration
Elle traduit les instructions symboliques par des instructions machine de
l'ordinateur cible.
On peut ce niveau amliorer le texte (OPTIMISATION).
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
+ a b - <>
S0 S1 e e e e
S1
S2 S2 S1
+-----------------------------+
S1, S2 = nom de sous-programme qui fait appel un sousprogramme qui voit si cette variable est dans le sous-programme
ou non.
Bruno Delb
http://www.brunodelb.com
Compilation
Notation
-> = avancer dans le texte suivant
= PTEXTE := PTEXTE + 1
. = passer l'tat (ligne) suivant
= PILE (SP) := PILE (SP) + 1
v = dpiler
= SP := SP - 1
^ = empiler
= SP := SP + 1
PILE (SP := n
e = cas d'erreur
= afficher un message d'erreur
algorithme de reprise sur erreur
end = arrt de l'analyse
= mot syntaxiquement correct
omission = arrt de l'analyse
= omission de caractres
surplus = arrt de l'analyse
= surplus de caractres
/// = cas impossible
= situation impossible de l'automate
Exemple
+--------------------------------------------------+
^3
e
e
e
omission
+---------+---------+---------+---------+----------
surplus surplus surplus surplus end
+---------+---------+---------+---------+----------
-> .
///
///
///
///
+---------+---------+---------+---------+----------
^7
^7
e
e
omission
+---------+---------+---------+---------+----------
e
e
-> .
e
omission
+---------+---------+---------+---------+----------
v .
v .
v .
v .
v .
+---------+---------+---------+---------+----------
^3
-> .
///
///
///
+--------------------------------------------------+
6
7 7 8
4 4 4 4 4 5 6
1 1 1 1 1 1 1 1 2
surplus (?!) => arrt de l'analyseur
Date : 12/11/1997
Bruno Delb
Date : 12/11/1997
http://www.brunodelb.com
Compilation
La grammaire
Ambiguit
Dfinition
Une rgle est ambigue si et seulement si rgle et si
<> 0.
Exemple
On peut alors :
modifier le langage ou
Rcursivit gauche
Dfinition
Il y a rcursivit gauche si un lment de V est son propre premier.
Exemple
<A> ->
<T> -> _<B><T>
Exemple
<A><B><C>
devient
<A>
->
<C><T>
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
Exemple
Forme normale
Disjonction et conjonction :
<A> -> xyz devient <A> -> <B>z
<B> -> xy
Premier
v Premier de <A> v _ Premier (<A>) il existe une rgle du type :
<A> -> <X > ...
1
<X > -> <X > ...
1 2
.... -> ....
<X > -> v ...
n
Suivant
Dfinition
v suivant de <A> il existe une rgle du type : <S> -> ... <T><U> ...
Exemple
<A> -> <B>x
<T> -> y<B><C>d
<C> -> _y
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
L'automate
Construction
Codage d'un lment de V = ^n
Avec :
0 = reste (erreur)
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
La grammaire
Simplification
Principe
Rgle du type <A> -> <B> :
supprimer <A>
Rgle utilise une seule fois dans une rgle de mme forme :
la supprimer
10
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
Exemple
<A> -> b<C>d => <A> -> bxyzd
<C> -> xyz
Exemple
<A> -> _xy
Exemple
<A> -> xyabcz
11
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
L'automate
mmoriser le type
non => placer le nom avec son descripteur (variable, type) dans le
dictionnaire
Exemple
Enonc : entier A, rel B , B <- A
Prexistant :
Dictionnaire :
+-------- descripteur ----------------+
+-------------------------------------+
Aux Var Rel Real Procedure
+-------------------------------------+
+---------- identificateur -----------+
LIS :
+----------------+
point d'entre
+----------------+
12
Bruno Delb
http://www.brunodelb.com
Date : 12/11/1997
Compilation
Procdure REAL
Traduction :
AUX <- CALL (A) => B <- A
B <- AUX
Dictionnaire :
+-----------------------------------+
A Var Entier B Var Rel
+-----------------------------------+
LIS :
+------ AUX <-> CALL (A) -------+ +---- B <- AUX ----+
+------------------------------------------------------+
CALL point d'entre A Aux Affecter B Aux |
+------------------------------------------------------+
Format
Une unit de programme est un couple module (programme principal, texteobjet, sous-programme) (format source) et descripteur de module (nom,
taille, ...) (format binaire excutable).
But
Faire accepter, alternativement, sur la ligne de l'erreur et la suivante, les
caractres du texte.
Inconvnients
Erreurs de l'algorithme possibles diagnostiques aberrants possibles
13