Machines virtuellesCours de Compilation A vancée (MI190)Benjamin CanouUniversité Pierre et Maire CurieAnnée 2010/2011 – Semaine 2. . . . . .Machines virtuelles. . . . . .= L = B1. Un compilateur L ! L :A BI Un p rogramme écrit en langage L ,BI transfo rmant mon p rogramme en un équivalent en L .B2. Une machine virtuelle A p our ma machine B :I Un p rogramme écrit en langage L ,BI capable d’exécuter les p rogrammes en langage L .APrincip e général. .Machine A Machine BI . ILangage comp ris : L Langage comp ris : LA BI IImplantation : I Implantation : IA BJ’ai dans ma p o che :I un p rogramme en langage L AI une machine de t yp e BQue faire ?. . . . . .Princip e général. .Machine A Machine BI . ILangage comp ris : L Langage comp ris : LA BI IImplantation : I = L Implantation : I = A B BJ’ai dans ma p o che :I un p rogramme en langage L AI une machine de t yp e BQue faire ?1. Un compilateur L ! L :A BI Un p rogramme écrit en langage L ,BI transfo rmant mon p rogramme en un équivalent en L .B2. Une machine virtuelle A p our ma machine B :I Un p rogramme écrit en langage L ,BI capable d’exécuter les p rogrammes en langage L .A. . . . . .Machine virtuelle de plate-fo rme(Ce n’est pas le sujet de ce cours)Dans le cas général, il est trop difficile de recompiler.Une machine virtuelle est donc la seule p ossibilité.. .Machine PPC Machine x64.I ILangage comp ris : asm PPC Langage comp ris : asm x64I IImplantation : asm x86 ...
J’ai dans ma poche : Iun programme en langageLA Iune machine de type B Que faire ? 1. Un compilateurLA!LB: Un programme crit en langageLB, transformant mon programme en un quivalent enLB. 2. Une machine virtuelle A pour ma machine B : Un programme crit en langageLB, capable d’excuter les programmes en langageLA.
IIII
Machine virtuelle de plate-forme (Ce n’est pas le sujet de ce cours)
Dans le cas gnral, il est trop difficile de recompiler. Une machine virtuelle est donc la seule possibilit.
IIII
Machine PPC
gage compris : as
Langage compris : asm PPC Implantation : asm x86
II
Machine x64
Langage compris : asm x64 Implantation :
Autres noms :mulateur, simulateur, ... Exemples :QEMU, DOSBox, VirtualPC, ...
Machine virtuelle applicative
II
Machine ZAM (ocaml)
Langage compris : asm ZA
Langage compris : asm ZAM Implantation : asm x86
II
Machine x64
Langage compris : asm x64 Implantation :
Dans ce cas, le choix est dlibr : 1.On veut compiler un langage donn. 2.On prfre compiler vers un assembleur adapt. 3.On utilise une machine virtuelle pour l’excuter.
QUIZZ :Pourquoi ?
Machine virtuelle applicative
II
Machine ZAM (ocaml)
Langage compris : asm ZA
Langage compris : asm ZAM Implantation : asm x86
II
Machine x64
Langage compris : asm x64 Implantation :
Dans ce cas, le choix est dlibr : 1.On veut compiler un langage donn. 2.prfre compiler vers un assembleur adapt.On 3.On utilise une machine virtuelle pour l’excuter.
Exemples d’implantations de la machine virtuelle OCaml : ocamlrun :crite en C portable partout o un compilateur C est disponible obrowser :crite en JavaScript on peut excuter un programme caml dans un navigateur ocapic :crite en assembleur PIC un langage de haut niveau sur microcontroleurs
III
Implantations alternatives : OpenJDK :pour la JVM d’oracle Mono :pour la CLR
I
Machine virtuelle applicative :noitcartbsa
III
Modle smantique clair et fig : plus facile de thoriser, excutables plus durables, portabilit facile, y compris aux tiers.
III
Instructions de haut niveau : moins d tapes de compilation, ’ support du langage!compilation plus simple, schma de compilation unique.
II
Machine virtuelle applicative :aribo-ptnreitli
III
Entre les langages : VB.Net peut appeler des fonctions F# dans la CLR. Entre les plate-formes : reprsentation spcifie des chaines, taille des entiers, etc. (ex : Sauvegarde sous Win/x86, relecture sous GNU/PPC). Entre les machines : primitives rseau spcifies