0% ont trouvé ce document utile (0 vote)
32 vues19 pages

Compilation 1

Transféré par

Ghaffari Walid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues19 pages

Compilation 1

Transféré par

Ghaffari Walid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Compilation

Professeur: Youssef MELLAH

1
 Compilation
 Pourquoi faire de la compilation?
 Qu’est ce qu’un compilateur?
 Qu’est ce qu’un interpréteur?
 La décompilation
 Historique
 Compilateur/Intérpreteurs.

2
Compilation
 la traduction est le fait de traduire d’un langage à un autre
(exemple Pascal  C)
 La compilation est un cas particulier de la traduction

3
Pourquoi faire de la compilation?
 Mener à bien l’écriture d’un programme comme un
compilateur, le tester, le documenter,… a un intérêt en soi.

 Un programmeur doit comprendre comment est ce que des


programmes se compilent et s’exécutent. Ceci aide à la
compréhension du comportement du compilateur utilisé,
ainsi que ses limitations, messages d’erreurs,…

4
Pourquoi faire de la compilation?
 L’étude du fonctionnement des compilateurs permet de:
- Comprendre les concepts des langages de programmation
- Eviter des erreurs de programmation et optimiser vos
programmes

5
Qu’est ce qu’un compilateur?
 Un programme, qui traduit un programme écrit dans un langage L
en un programme écrit dans un langage L’ différent de L (en
général L est un langage évolué et L’ est un langage moins
expressif ).
- Quelques exemples :
- De C vers l’assembleur x86 plus les appels système Unix/Linux
- De C vers l’assembleur x86 plus les appels systèmeWin32
- De LATEX vers Postscript ou HTML (latex2html)
- Minimisation des automates (compilation d’un automate vers un
automate plus efficace)
- On peut « compiler » vers une machine. . . interpretée (ex :
bytecode Java, bytecode OCaml)

6
Ce qui est important dans un compilateur
 Le code produit est rapide
 Le compilateur est rapide
 Les messages d’erreurs sont précis
 Le code produit est correct
 Il supporte un débogueur
 Il sait faire des optimisations poussées

7
Qu’est ce qu’un interpréteur?
 Un programme qui prends en entrée un autre programme,
écrit pour une machine virtuelle, et l’exécute sans le
traduire.
 Ex : les interpréteurs des langages VisualBasic, PERL,
Python, Bash, PHP, etc.

8
Décompilation
 On va dans le sens inverse, d’un langage moins structuré vers
un langage évolué. Ex : retrouver le source C à partir d’un
code compilé (d’un programme C).
 Applications :
- récupération de vieux logiciels ;
- découverte d’API cachées ;

9
Langages et compilation
 Un ordinateur est une machine conçue pour le traitement
automatique de l’information
 Il nécessite un langage informatique
 Beaucoup de programmes étaient écrits en langage machine.
Parfois c’est nécessaire pour travailler directement avec des
microprocesseurs.
 Un bref coup d’œil sur le code binaire ou hexadécimal rend
compte de la chance de travailler avec des langages de haut
niveau.

10
Langages et compilation
 Pour que les langages de haut niveau soient utilisables, on doit
être capable de les convertir en une forme que la machine peut
comprendre et c’est là qu’interviennent les compilateurs.

11
Chronologie des langages
 1. Langage machine: suite de 0 et 1 exécutable directement
sur la machine.
 inconvénients: pas évident, réservé aux spécialistes et lié au
circuit logique de la machine.
 2. Langage Assembleur: dépendant toujours de la machine
mais non directement exécutable sur celle-ci. Ses
instructions se composent de commandes représentant les
adresses symboliques des données et des différents registres.
 L’assembleur est assez utilisé pour faire des réalisations en
relations avec le matériel, comme les drivers. C’est aussi un
langage préféré des programmeurs de virus informatique.
12
Chronologie des langages
 Langages évolués ou langage de haut niveau(fortran,
Pascal,…): par opposition à l’assembleur qui est considéré de
bas niveau.
 Ces langages de haut niveau ont l’avantage d’être
indépendants de la machine (portable) et d’adapter une
forme proche des langages utilisés par les humains.
 Ni l’assembleur, ni les langages de haut niveau ne sont
directement exécutables par la machine et donc un
traducteur se trouve être nécessaire.

13
Historique sur l’apparition des
langages évolués
 Il existe actuellement plus de 2000. Nous citons:
- 1956: FORmula TRANslator ou FORTRAN, destiné au
calcul scientifique.
- 1958: ALGOrithmic Language ou ALGOL pour la résolution
des pbs mathématiques.
- 1959: Common Business Oriented Language ou COBOL:
adapté à des pbs de nature commerciale ou administrative.
- 1964: PL/I programming Language. C’est un produit de
IBM. C’est un outil pédagogique intéressant par sa facilité
d’apprentissage et son caractère interactif.

14
Historique sur l’apparition des
langages évolués
 1970: PASCAL, outil célèbre

15
Outils de génération automatique
 La construction des compilateurs obéit à des règles et
méthodes.
 Il existe des outils qui s’occupent de la génération
automatique des différentes parties d’un compilateur
(analyseur lexical et syntaxique) à partir d’une description
formelle de la grammaire du langage considéré.
 Citons par exemple: Lex/Flex pour la génération
d’analyseurs lexicaux(lexers), Yacc/Bison pour la génération
d’analyseur syntaxiques (parsers).

16
Compilateurs et interpréteurs
 En imposant certaines contraintes sur les langages de haut
niveau, le processus de traduction en langage machine (ou
autre langage) pouvait être automatisé

 traducteurs: programmes qui acceptent (comme donnée)


une représentation textuelle d’un algorithme exprimée dans
un langage source et qui produit une présentation du même
algo exprimée dans un langage cible

17
Compilateurs et interpréteurs

Programme
Traducteur Produit en
source en
langage
langage
cible
source

18
Compilateurs et interpréteurs
 LA définition d’un traducteur est générale: par exemple un
programme qui traduit du Pascal vers C ou Fortran est un
traducteur
 Par convention, un compilateur est un traducteur d’un
langage de programmation de haut niveau (c, pascal,…) en
langage machine exécutable par le proc.

19

Vous aimerez peut-être aussi