Compilation

594 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
594
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
63
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Compilation

  1. 1. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 Compilation SommaireASSEMBLEUR..............................................................................................................3 RÉFÉRENCE AVANT..........................................................................................................3 Deux passes...........................................................................................................3 Une passe...............................................................................................................3ETAPES.......................................................................................................................4 ALLOCATION..................................................................................................................4 SUBSTITUTION...............................................................................................................4 GÉNÉRATION.................................................................................................................4 PLACE LES VARIABLES UTILISÉES DANS DES REGISTRES...............................................................4LES TYPES DE LANGAGE..............................................................................................5 LANGAGE SANS STRUCTURE PARENTHÉSÉE...............................................................................5 LANGAGE AVEC STRUCTURE PARENTHÉSÉE...............................................................................5LES AUTOMATES RÉCURSIFS (À PILE DÉTATS)..........................................................6 NOTATION....................................................................................................................6 EXEMPLE......................................................................................................................6LA GRAMMAIRE...........................................................................................................7 AMBIGUITÉ...................................................................................................................7 Définition................................................................................................................7 Exemple.................................................................................................................7 RÉCURSIVITÉ À GAUCHE....................................................................................................7 Définition................................................................................................................7 Exemple.................................................................................................................7 DISJONCTION AVEC PREMIERS COMMUNS................................................................................8 Définition................................................................................................................8 Exemple.................................................................................................................8 FORME NORMALE............................................................................................................8 PREMIER......................................................................................................................8 SUIVANT......................................................................................................................8 Définition................................................................................................................8 Exemple.................................................................................................................8LAUTOMATE...............................................................................................................9 CONSTRUCTION..............................................................................................................9LA GRAMMAIRE.........................................................................................................10 SIMPLIFICATION............................................................................................................10 Principe................................................................................................................10 Exemple...............................................................................................................11 FORME NON NORMALE REPRÉSENTABLE.................................................................................11 Définition..............................................................................................................11 Exemple...............................................................................................................11 DISJONCTION DANS UNE CONJONCTION................................................................................11 Définition..............................................................................................................11 Exemple...............................................................................................................11LAUTOMATE.............................................................................................................12 1
  2. 2. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationREPRISE SUR ERREUR.....................................................................................................12 Actions sémantiques..............................................................................................12 Exemple...............................................................................................................12 Format.................................................................................................................13 But.......................................................................................................................13 Inconvénients.......................................................................................................13 2
  3. 3. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationAssembleur Référence avant Deux passes Le premier parcours constitue la table des symboles et traduit les codes- opérations. Le deuxième parcours remplit les parties adresses des instructions. Une passe Si lassembleur rencontre un identificateur inexistant dans la table des symboles, il linstalle tout de même dans la table et lui affecte une liste dattente. Il existe donc encore dans le texte objet des instructions incomplètes. Les langages évolués travaillent en une seule passe. 3
  4. 4. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationEtapes Allocation Elle détermine pour chaque objet du dictionnaire une adresse relative au début du programme objet. Le compilateur doit engendrer en liste dinstructions symboliques des appels une allocation despace mémoire. Substitution Substitue les pointeurs de la liste dinstructions symbolique par des adresses dans le texte-objet. Génération Elle traduit les instructions symboliques par des instructions machine de lordinateur cible. On peut à ce niveau améliorer le texte (OPTIMISATION). Place les variables utilisées dans des registres Le texte objet est placé dans un fichier en format binaire translatable. Mais les problèmes ne sont pas résolus pour les traducteurs : • remplir les parties-adresses par des CALL • les adresses sont relatives au début du texte-objet, le compilateur ne sait donc pas où sera implanté le programme lors de son exécution. 4
  5. 5. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationLes types de langage Langage sans structure parenthésée Lanalyseur syntaxique est fondé sur un automate détats finis. Ce sont des analyseurs très rapides. Langage avec structure parenthésée Lautomate doit faire appel à des inclusions sémantiques comptant les parenthèses. +-----------------------------+ ¦ ¦ + ¦ a ¦ b ¦ - ¦ <> ¦ ¦ S0 ¦ S1 ¦ e ¦ e ¦ e ¦ e ¦ ¦ S1 ¦ ¦ S2 ¦ S2 ¦ S1 ¦ ¦ +-----------------------------+ • e = message " Reprise sur erreur " • S1, S2 = nom de sous-programme qui fait appel à un sous- programme qui voit si cette variable est dans le sous-programme ou non. 5
  6. 6. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationLes automates récursifs (à pile détats) Notation -> = avancer dans le texte suivant = PTEXTE := PTEXTE + 1 . = passer à létat (ligne) suivant = PILE (SP) := PILE (SP) + 1 v = dépiler = SP := SP - 1 ^ = empiler = ¦ SP := SP + 1 ¦ PILE (SP := n e = cas derreur = ¦ afficher un message derreur ¦ algorithme de reprise sur erreur end = arrêt de lanalyse = mot syntaxiquement correct omission = arrêt de lanalyse = omission de caractères surplus = arrêt de lanalyse = surplus de caractères /// = cas impossible = situation impossible de lautomate 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 ¦ -> . ¦ /// ¦ /// ¦ /// ¦ +--------------------------------------------------+ La suite de la pile détats est : 7 8 3 4 4 4 5 6 7 7 7 7 7 7 7 8 3 4 4 4 4 4 4 4 4 4 5 6 1 1 1 1 1 1 1 1 1 1 1 1 1 2 ((x))?! => surplus (?!) => arrêt de lanalyseur 6
  7. 7. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationLa grammaire Ambiguité Définition Une règle est ambigue si et seulement si règle et si Premier (<a>) _ Suivant (<A>) <> 0. Exemple <A> -> <B>b ¦ * <B> -> ba<C> ¦ L = (ba) b <C> -> _¦<B> ¦ On peut alors : • modifier le langage ou • modifier la grammaire (exemple : <A> -> b<B>) • laisser venir lerreur • faire un branchement inter-automates Récursivité à gauche Définition Il y a récursivité à gauche si un élément de V est son propre premier. Exemple Exemple <A> -> : <A><B>¦<C> devient <A> -> <C><T> <T> -> _¦<B><T> 7
  8. 8. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationDisjonction avec premiers communs Définition Il y a disjonction si et seulement si deux termes ont au moins un premier commun. Exemple <A> -> <B>¦<C> devient <A> -> <C><T> <T> -> _ ¦<B><T>Forme normale Disjonction et conjonction : <A> -> xy¦z devient <A> -> <B>¦z <B> -> xyPremier v Premier de <A> ó v _ Premier (<A>) ó il existe une règle du type : ¦ <A> -> <X > ... ¦ 1 ¦ <X > -> <X > ... ¦ 1 2 ¦ .... -> .... ¦ <X > -> v ... ¦ nSuivant Définition v suivant de <A> ó il existe une règle du type : ¦ <S> -> ... <T><U> ... ¦ <X > -> ... <X > ¦ 1 2 ¦ .... -> .... ¦ <X > -> v ¦ n Exemple ¦ <A> -> <B>x ¦ <T> -> y<B><C>d ¦ <C> -> _¦y ð Suivant (<B>) = { x, <C>, Premier (C), d } = { x, <C>, y, d } 8
  9. 9. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationLautomate Construction Codage dun élément de V = ^n Avec : • n = premier état du sous-automate correspondant à lélément de V • . = dans les colonnes des premiers de lélément de V • ^ = sortie de sous-automates autres que laxiome • " surplus " = sortie daxiome sauf dans la colonne de • " end " (marque de fin de texte) • X = premières lignes de sous-automates autres que • laxiome (cas impossible) • . = ligne comportant un appel à une règle comportant • " omission " = colonne de " end " • 0 = reste (erreur) 9
  10. 10. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationLa grammaire Simplification Principe Règle du type <A> -> <B> : • <A> différent de laxiome • supprimer <A> • remplacer <A> par <B> Règle utilisée une seule fois dans une règle de même forme : • la remplacer dans cette dernière règle • la supprimer 10
  11. 11. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 Compilation Exemple <A> -> b<C>d => <A> -> bxyzd <C> -> xyzForme non normale représentable Définition <A> -> _¦xy Exemple <A> -> _¦xyDisjonction dans une conjonction Définition La disjonction de terminaux joue le même rôle. ð suppression de lautomate qui les traite Exemple <A> -> xya¦b¦cz 11
  12. 12. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 CompilationLautomate Reprise sur erreur Actions sémantiques • mémoriser le type • parcours du dictionnaire : nom existant ? • oui => " erreur : double déclaration " • non => placer le nom avec son descripteur (variable, type) dans le dictionnaire • parcours du dictionnaire : identificateur existant ? • oui => mémorisation de son type • non => " erreur : identificateur inexistant " • parcours du dictionnaire : identificateur existant ? • oui => comparer les deux types : identiques ? • oui -> création en LIS dun appel à un sous-programme de conversion • non => " erreur " Exemple Enoncé : entier A, réel B , B <- A Préexistant : Dictionnaire : +-------- descripteur ----------------+ +-------------------------------------+ ¦ Aux ¦ Var ¦ Réel Real ¦ Procedure ¦ +-------------------------------------+ +---------- identificateur -----------+ LIS : +----------------+ ¦ point dentrée ¦ +----------------+ 12
  13. 13. Bruno Delb http://www.brunodelb.com Date : 12/11/1997 Compilation Procédure REAL Traduction : AUX <- CALL (A) ¦ => B <- A B <- AUX ¦ Dictionnaire : +-----------------------------------+ ¦ A ¦ Var ¦ Entier B ¦ Var ¦ Réel ¦ +-----------------------------------+ LIS : +------ AUX <-> CALL (A) -------+ +---- B <- AUX ----+ +------------------------------------------------------+ ¦ CALL ¦ point dentrée ¦ A ¦ Aux Affecter ¦ B ¦ Aux | +------------------------------------------------------+Format Une unité de programme est un couple module (programme principal, texte- objet, sous-programme) (format « source) et descripteur de module (nom, taille, ...) (format « binaire exécutable).But Faire accepter, alternativement, sur la ligne de lerreur et la suivante, les caractères du texte.Inconvénients Erreurs de lalgorithme possibles ð diagnostiques aberrants possibles 13

×