compilation
Download
Skip this Video
Download Presentation
COMPILATION

Loading in 2 Seconds...

play fullscreen
1 / 29

COMPILATION - PowerPoint PPT Presentation


  • 164 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' COMPILATION' - makoto


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

slide5
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

slide29
TAF

RECHERCHE

LEX/YACC

ANTLR

Cours Compilation

ad