Compilation
This presentation is the property of its rightful owner.
Sponsored Links
1 / 29

COMPILATION PowerPoint PPT Presentation


  • 129 Views
  • Uploaded on
  • Presentation posted in: General

COMPILATION. Élaboré par Mazigh Yosra [email protected] Cours 2 ème année IAG. WEBOGRAPHIE. Algorithmique et bases de la programmation : Introduction à la Compilation - Nicolas Delestre - INSA ROUEN https:// moodle.insa-rouen.fr/file.php/698/CM/Compilation.pdf

Download Presentation

COMPILATION

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Compilation

COMPILATION

Élaboré par [email protected]

Cours 2ème année IAG


Webographie

WEBOGRAPHIE

  • Algorithmique et bases de la programmation : Introduction à la Compilation - Nicolas Delestre - INSA ROUEN

    https://moodle.insa-rouen.fr/file.php/698/CM/Compilation.pdf

  • Introduction à la compilation: Cours 1 – Yann Régis-GianasPPS – Université Denis Diderot – Paris 7 (2010)

    http://www.pps.jussieu.fr/~yrg/compil/compilation-slides-cours-1.pdf

  • Introduction à la compilation Christine Paulin-Mohring – Université Paris Sud – Master Informatique 2009-2010

    http://www.lri.fr/~paulin/COMPIL/slides-2009-1.pdf

  • Compilation – Alexis Nasr– http://pageperso.lif.univ-mrs.fr/~alexis.nasr/Ens/Compilation/intro_compil.pdf

  • Cours M HammemiMoez - ISG de Tunis (2007)

  • Cours Mme El Abed Lamia - ISG de Tunis (2007)

  • Cours – Annie Corbel 1999 http://www.emse.fr/~corbel/COMPIL/index.html

Cours Compilation


Prerequis

PREREQUIS

  • Théorie des langages formels: expressions régulières, automates, grammaires, ambiguïté

  • Langages de programmation

  • Algorithmique

Cours Compilation


Objectif

Objectif

Définir la notion de compilateur et les principes de base

POURQUOI?

QOUI?

COMMENT?

Cours Compilation


Compilation

plan

  • Définition: compilateur

  • Analyse lexicale (linéaire)

  • Analyse syntaxique (hiérarchique)

  • Analyse sémantique

  • Génération du code intermédiaire

  • Optimisation du code

  • Génération du code objet

Cours Compilation


Pourquoi 1

POURQUOI? (1)

  • Si vous deviez écrire un programme capable d‘évaluer (au sens de calculer) des expressions arithmétiques qu'un utilisateur aurait saisies au clavier

  • Par exemple : ≪ (24+45.5)/87*1.2E3 ≫

  • Comment procéder ?

Cours Compilation


Pourquoi 2

POURQUOI? (2)

  • Ecrire des procédures et des fonctions permettant

  • De reconnaitre un entier

  • De reconnaitre un réel

  • De reconnaitre une addition

  • ...

    ➔C'est compliqué pour quelque chose de simple

    ➔ A la moindre modification tout est à reprogrammer

Cours Compilation


Pourquoi 3

POURQUOI? (3)

  • Il faut suivre des méthodes et des techniques afin de résoudre ce type de problème :

    C'est le rôle de la COMPILATION

Cours Compilation


Quoi 1

QUOI? (1)

  • C'est un programme qui traduit un programme écrit dans un langage source vers un langage cible en indiquant les erreurs éventuelles que pourrait contenir le programme source

programme

source

programme

cible

compilateur

messages

d'erreur

Cours Compilation


Quoi 2

QUOI? (2)

  • Premier compilateur : compilateur Fortran de J. Backus (1957)

  • Langage source : langage de haut niveau (C, C++, Java, Pascal, Fortran...)

  • Langage cible : langage de bas niveau (assembleur, langage machine)

Cours Compilation


Comment 1

COMMENT? (1)

Et comment ça marche ?

Comme un enfant qui apprend à lire...

  • On reconnait d'abord les mots

    Analyse Lexicale

  • Puis, on vérifie que tous les mots sont dans le bon ordre

    Analyse Syntaxique

  • Enfin, on vérifie que tout ceci a un sens

    Analyse Sémantique

Cours Compilation


Structure globale

Structure Globale

En deux parties :

  • analyse/reconnaissance

  • synthèse/transformation

Partie

Avant

(analyse)

Partie

Arrière

(synthèse)

Rep sémantique

Texte

source

Texte cible

Cours Compilation


Les phases de la compilation

Les phases de la compilation

programme source

analyseur lexical

analyseur syntaxique

analyseur sémantique

gestion de la

table des symboles

générateur de code intermédiaire

gestion des erreurs

"optimiseur" de code

générateur de code cible

programme cible

Cours Compilation


Analyse lexicale 1

Analyse lexicale (1)

  • Lit le programme source

  • Reconnaît les séquences de caractères significatives appelées lexèmes

  • Pour chaque lexème, l’analyseur lexical émet un couple

  • Exemple : (NOMBRE, 123)

(type du lexème, valeur du lexème | @ dans la table de symboles)

Cours Compilation


Analyse lexicale 2

Analyse lexicale (2)

  • Les types de lexèmes sont des symboles, ils constituent les symboles terminaux de la grammaire du langage

  • Les symboles terminaux de la grammaire (ou types de lexèmes) constituent l’interface entre l’analyseur lexical et l’analyseur syntaxiqueLes types de lexèmes doivent être connus des deux

Cours Compilation


Analyse lexicale 3

@ en mémoire

portée

nom

type

Table de

symboles

Analyse lexicale (3)

Cours Compilation


Analyse lexicale 4

Analyse lexicale (4)

  • Exemple:

    position := initiale + vitesse*60

    <id1,1> <aff,:=> <id2,2> <op,+> <id3,3> <op,*> <nb,60>

Cours Compilation


Analyse lexicale 5

Analyse lexicale(5)

  • Comment reconnaitre les mots?

  • Les lister : avoir un dictionnaire de mots clefs

  • Mais certains mots sont génériques :

    • Les nombres

    • Les identifiants des programmes (variable, fonction/procédure, etc.)

  • Il faut avoir un outil permettant de les caractériser

    expressions régulières

Cours Compilation


Analyse lexicale 6

Analyse lexicale(6)

Comment on implante tout ça ?

  • La théorie montre que toute expression régulière peut être représentée à l'aide d'un automate (et inversement)

  • Problème de différenciation entre identificateurs et mots clés

Cours Compilation


Analyse syntaxique 1

Analyse syntaxique(1)

  • Vérifie que la suite des unités lexicales (lexèmes) fournie par l’analyseur lexical est compatible avec une grammaire et produit en sortie un arbre d'analyse (arbre syntaxique)

  • grammaire hors contexte (ou notation BNF) qui sert à décrire la syntaxe du langage

  • Deux types d'analyse : Ascendante ou Descendante

Cours Compilation


Analyse syntaxique 2

Analyse syntaxique(2)

  • Exemple:(Arbre d’Analyse Descendante )

    <id1,1> <aff,:=> <id2,2> <op,+> <id3,3> <op,*> <nb,60>

    Affectation

    id := expr

    position expr + expr

    id expr * expr

    initiale id nombre

    vitesse 60

Cours Compilation


Analyse s mantique 1

Analyse sémantique(1)

  • Vérifie la cohérence de l'arbre d'analyse

  • Collecte d'informations destinées à la production de code

  • L’analyse sémantique utilise l’arbre abstrait, ainsi que la table de symboles afin d’effectuer un certain nombre de contrôles sémantiques

l’arbre abstrait

Analyse Sémantique

contrôles sémantiques

la table de symboles

Cours Compilation


Analyse s mantique 2

Analyse sémantique(2)

parmi lesquels :

  • Vérifier que les variables utilisées ont bien été déclarées

  • Au contrôle de type : le compilateur vérifie que les opérandes d’un opérateur possèdent bien le bon type

  • conversions automatiques de types

Cours Compilation


Analyse s mantique 21

Analyse sémantique(2)

  • Exemple:

:=

id1 +

id2 *

id3 EntierVersReel

60

:=

id1 +

id2 *

id3 60

Cours Compilation


G n ration du code interm diaire

Génération du code intermédiaire

  • Programme pour une machine abstraite

    • Code facile à produire, à traduire en langage

      cible

  • Exemple: code à 3 adresses

:=

id1 +

id2 *

id3 EntierVersReel

60

temp1:=EntierVersReel(60)

temp2:=id3*temp1

temp3:=id2+temp2

id1:=temp3

Cours Compilation


Optimisation du code

Optimisation du code

  • Optimiser le code intermédiaire en éliminant les opérations inutiles pour produire du code plus efficace et pour une exécution machine plus rapide

  • Exemple:

temp1:=EntierVersReel(60)

temp2:=id3*temp1

temp3:=id2+temp2

id1:=temp3

temp1:= id3 * 60.0

id1:= id2 + temp1

Cours Compilation


G n ration du code machine

Génération du code machine

  • Obtention du code machine

MOVF id3, R2

MULF #60.0, R2

MOVF id2, R1

ADDF R2, R1

MOVF R1, id1

temp1:= id3 * 60.0

id1:= id2 + temp1

Cours Compilation


R capitulatif

Récapitulatif...

temp1:=EntierVersReel(60)

temp2:=id3*temp1

temp3:=id2+temp2

id1:=temp3

Analyseur sémantique

position := initiale + vitesse * 60

Analyseur lexical

:=

id1 +

id2 *

id3 EntToReel

60

:=

id1 +

id2 *

id3 60

Optimiseur de code

id1 := id2 + id3 * 60

temp1:= id3 * 60.0

id1:= id2 + temp1

Analyseur syntaxique

Générateur de code

Générateur code

intermédiaire

MOVF id3, R2

MULF #60.0, R2

MOVF id2, R1

ADDF R2, R1

MOVF R1, id1

Cours Compilation


Compilation

TAF

RECHERCHE

LEX/YACC

ANTLR

Cours Compilation


  • Login