Introduction à la compilation
48 pages
Français

Introduction à la compilation

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
48 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

-1-INF 554 Luc MarangetCompilationLuc.Maranget@inria.frhttp://www.enseignement.polytechnique.fr/profs/informatique/Luc.Maranget/TLP/-2-A Qu’est-ce que compiler ?B Machine abstraite.C Compilation de PCF.-3-Presque un ordinateurProgrammer l’ENIAC (1946), c’est connecter des caˆbles.-4-Un peu plus tard (Iris 10 010, 1967)Programmer un ordinateur, c’est entrer un programme en m´emoire.-5-Un ordinateurPar d´efinition ou presque (machine de Von Neumann), unordinateur est :◮ Une machine « universelle ».◮ Compos´ee d’une unit´e de controˆle et d’une m´emoire.◮ L’UC lit (et ex´ecute en s´equence) un programme a` partir de lam´emoire.◮ Le programme est une s´equence d’instructions ´el´ementaires :´⊲ Lire/Ecrire une case de m´emoire.⊲ Additionner le contenu de deux cases de m´emoire.⊲ Lire (et ex´ecuter) une instruction qui n’est pas la suivante.⊲ etc.-6-Entrer un programme en m´emoireIl s’agit d’un d´etail technique. Par exemple...Ann´ees 80, « amateur » fauch´e Aujourd’hui, assembleur-7-Et PCF ?Il n’existe pas d’ordinateur qui ex´ecutent les programmes PCFdirectement.Car PCF s’addresse d’abord aux ˆetre humains (sisi).Deux techniques pour ex´ecuter PCF.´◮ Ecrire un interpr´eteur, ce qui repousse le probl`eme (dans quellangage ´ecrire l’interpr´eteur ?).◮ Traduire PCF dans le langage de la machine, c-a-d compiler.-8-Machine abstraiteTraduire PCF vers une vraie machine, c’est trop compliqu´e.Car la vraie machine est un peu trop simple, ...

Sujets

Informations

Publié par
Nombre de lectures 49
Langue Français

Extrait

-1-
INF
554
Luc
Compilation
Maranget
Luc.Maranget@inria.fr http://www.enseignement.polytechnique.fr/profs/ informatique/Luc.Maranget/TLP/
-2-
A
B
C
Qu’est-ce
que
compiler
Machine abstraite.
Compilation
de
PCF.
?
-3-
Programmer
Presque
l’ENIAC
(1946),
un
ordinateur
c’est
connecter
des
cables. ˆ
-4-
Un
Programmer
peu
plus
tard
un ordinateur,
c’est
(Iris
entrer
10
010,
1967)
un programme
en memoire. ´
-5-
Un ordinateur
Pard´enitionoupresque(machinedeVonNeumann),un ordinateur est :
Une machine«universelle».
´ioosmpConutie´ede´deueneetdunecontrˆol mem re.
LilCUtecus´enett(´eexe)ncueequnemmraogpra partir de la ` m´emoire.
seutmaemqeeuen´srogrLeple´seme´iatn:seredncnsiuctronti ´ acesed´mmeioer.Lire/Ecrireune
.eomrimee´sdsecauxdedenutenocelrennoitiddA
uneiter)´ecuetexri(eLvauie.ntpastassluqnoenirtsnitcu
etc.
-6-
Entrerunprogrammeenme´moire
Ilsagitdunde´tailtechnique.Par
Anne´es
80,
«
amateur
»
fauche´
exemple. . .
Aujourdhui,
assembleur
-7-
Et PCF ?
Ilnexistepasdordinateurquiex´ecutentlesprogrammesPCF directement.
CarPCFsaddressedabordauxeˆtrehumains(sisi).
Deuxtechniquespourexe´cuterPCF.
´ obprlesedae(eml`qec,ruetsuoperiulesnuqcrireuninterpr´eE langage´ecrirelinterpr´eteur?).
Traduire PCF dans le langage de la machine, c-a-d compiler.
-8-
Machine abstraite
TraduirePCFversunevraiemachine,cesttropcomplique´.
Car la vraie machine est un peu trop simple, et il y aura des complications pour les fonctions. ` A la place, nous traduisons vers une machineabstraite . .. Puis.
nIetJavaouc(etemmosbaeiartmalainchr´rperetocamlc).
Ou traduire le programme de la machine abstraite vers un programme machine.
Tout de suite (commeocamlopt).
lde´eexticu(onsroLJust In Time compilation, comme Java).
-9-
Poule et œuf
Imaginons que PCF est le seul langageL(informatique) de lhumanite´,quivientdinventersonpremierordinateurM. Pour pouvoirexe´cuterunprogramme´ecritenL, il faut : ´ Eircrnieuretne´rpruetI, deL, dans le langage deM.
Ensuite. . .
cr´eutpeomnceuirruetalipednOLversMenL(plus commode qu’enM).
uetarg(rocellipmceˆa`alireoCpmI), ce qui donneC.
On peut maintenant jeterI(mais il faut absolument garder lexe´cutableC).
Cestengroscequisestpass´e(maisavecFortran.)
Le´critureduncompilateurdanssonproprelangageestlebootstrap (atu-omaroc¸gae).
-10-
Pouleetœufdutroisi`ememill´enaire Soit un langage informatiqueLilable(etbootstrpae´s)ru´da`jepmoc une machineM. Je noteL →LMle source etL →MMocpm(eudatlbe´uc.eur)ilatexlUne nouvelle machineMrrarcmae.h´esivleur
Changer le compilateur pour qu’il emette le code deM, soit un nouveau compilateurLL→ MLe compiler, on obtient unrpile-comrosscL →MM. lireoCpmL →LMavec le cross-compiler. eipoClrree´ustltaLMMsurM. ` asard, surM, compLecLMA tout h ilerL → M, av→ M, normalement on a atteint un point fixe. SiL →LMcodeigrrisdleci.rele,i´eggoirfpastubtse
-11-
Une instruction :
Premiers pas
MachineUn (quelques) entier sur 32/64 bits, mais qui peut se repre´sentersymboliquement(assembleur). movl$n%eax
Machine abstraiteUn type Caml. typeins=Ldiofint|. . .
L’instruction (diteloadoumove)ratgeanecunstonmmiide´tean enti`eredansunregistre.
Unregistreestunecasedeme´moiredisponible`alit´rieurde n e lunite´decontrˆole.
Machine :un
Machine :un petit nombre de registres, ici%eax,%ebx. . .
Machine abstraite :un seul registre dit accumulateur.
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents