[Université Paris Diderot]

Pierre Letouzey

Teaching

MV6 : Machines Virtuelles (Licence 3)

Support de cours et de TP:

  • Cours1 : pdf ps
  • Cours2 : pdf ps
  • Cours3 : pdf ps
  • Cours4 : pdf ps
  • Cours5 : pdf ps
  • Les 5 cours regroupés en un document imprimable : pdf ps
  • TD1-3: réalisation d'une machine virtuelle pour UMIX (concours ICFP2006).
  • TD4: manipulation de bytecode caml. Sujet: pdf ou ps.
  • TD5: bytecode Caml, suite (extrait de l'examen 2007). Sujet: pdf ou ps.
  • TD6: manipulation de bytecode java. Sujet: pdf ou ps.
  • Annales: le sujet de juin 2007 en pdf ou ps.

Références:

  • Une description des instructions du bytecode Caml par X. Clerc
  • La spécification de la JVM. Une liste condensée et imprimable des instructions de la JVM.

Pour vous aider à étudier le bytecode Caml, les outils suivants sont à votre disposition sur lucien:

  • Pour demander à caml comment il compile une phrase donnée en bytecode, lancer ocaml -dinstr puis entrer votre phrase.
  • Pour voir l'évolution de la pile et de pc au cours de l'execution d'un morceau de bytecode, mettre ce bytecode dans un fichier test et lancer interp_byte test. Le bytecode doit utiliser la même syntaxe que celle affichée par ocaml -dinstr, et provenir d'une phrase autonome, contenant uniquement des instructions vu en cours. En particulier, pas d'accès à des variables ou fonctions globales...
  • Il est possible de créer un véritable fichier test.cmo à partir d'un fichier test contenant du bytecode au format texte tel que produit par ocaml -dinstr. Pour cela, lancer byte2cmo test. Cela produit un fichier (toujours) nommé test.cmo. On peut ensuite exécuter ce test.cmo avec la commande runcmo test.cmo (qui n'est autre qu'un appel déguisé à ocaml). En partant d'une phrase autonome Caml ... on ne voit alors rien, car il n'y a aucun affichage. Heureusement, ce byte2cmo accepte lui de traiter au moins les accès globaux aux fonctions de Pervasives, telles que print_int. Si la fonction qui vous intéresse produit un entier, vous pouvez par exemple placer le code que voici devant le votre, ce qui déclenchera un affichage de l'entier.
  • Enfin, à partir d'un fichier test.cmo il est possible d'afficher le bytecode contenu dedans avec la commande cmo2byte test.cmo

Enfin, pour les curieux et les aventureux, voici les sources de mon interp_byte : ma_cvm.tgz. Sur un système digne de ce nom, il n'y a normalement qu'à désarchiver, aller dans le sous-répertoire, taper make, puis renommer le binaire main en interp_byte.

Compilation (Master 1)

See the main web site of this course.

Preuves Assistées par Ordinateur (Master 1)

Notes de cours (préparées par Alexandre Miquel)

Quelques autres polycopiés concernant le lambda-calcul:

Sujets des TD/TP:

  • TD1 (déduction naturelle): pdf
  • TD2 (arithmétique de Peano): pdf
  • TD3 (premiers pas en Coq): pdf
  • TD4 (maths élémentaires en Coq): pdf
  • TD5 (entiers naturels en Coq): pdf
  • TD6 (théories et modèles): pdf
  • TD7 (listes en Coq): pdf
  • TD8 (prédicats inductifs): pdf
  • TD9 (enigme de MU): pdf
  • TD10 (système T et théorie des types simples): pdf

Annales:

Projet: le sujet en pdf, le fichier fourni MoreString.v et le fichier fourni à compléter LZW_skel.v

Preuves de Programmes (Master 2 LC)

Fichiers montrés en cours

Sujets des TP:

  • TP1 (premiers pas en Coq): pdf
  • TP2 (entiers naturels en Coq): pdf
  • TP3 (définitions inductives en Coq): pdf
  • TP4 (arbres binaires de recherche): pdf
  • TP5 (fonctions partielles en Coq): pdf
  • TP6 (logique de Hoare): pdf
  • TP7 (logique de Hoare, suite): pdf

Projet: enoncé

Anciens cours

Me contacter.