Intro

14
Annie Corbel 1999 1 Compilation Un compilateur tradui t un progr amme écrit en langage source en un programme équivalent écrit en langage cible ou objet Programme source Programme cible messages d'erreur listing compilateur 

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