:: Enseignements :: Master :: M2 :: 2013-2014 :: Machine Virtuelle (et bazard autour ...) ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Lab 3 - JVM interpreter |
Le but de ce troisième lab est d'implanter un interpréteur à pile pour la langage
Talk.
Une base de code est disponible:
vm2014-lab3.zip
Exercice 1 - JVM interpreter (Préparation)
Le but de cet exercice est d'utiliser l'interpreteur (et le JIT)
de la machine virtuelle pour exécuter un script Talk
et afficher sa valeur.
-
Dans le but de comprendre le code de l'interpreteur,
essayer d'exécuter le code suivant avec l'interpreteur
3
Que se passe t'il ?
-
Faire en sorte que le code précédent fonctionne.
Note: Il existe une méthode cosnstant dans MethodHandles.
-
A quoi servent les lignes commentées dans le main ?
Tester aussi dans le cas où le script est vide.
-
Vérifier que le rséultat de l'exécution d'un script vide est NIL.
-
Faite en sorte que le code suivant fonctionne
+ 3
Note: Il existe une méthode identity dans MethodHandles.
-
Faite de même avec '-' et '!'.
-
Ajouter l'implantation de l'ensemble des opérations binaires,
+, -, *, /, % ainsi que ==, !=, < <=, > et >=.
-
Faite en sorte que le code de création d'une lambda fonctionne.
foo = |x, y| [ x + y ]
foo
-
Implanter l'exécution d'une lambda et vérifier avec les appels suivants
res1 = []()
res2 = |x| [ x ](7)
res3 = |x, y| [ x + y ](2, 3)
-
Implanter APPLY et vérifier qu'il fonctionne avec le code suivant
a = |x, y| [ 1 + x * y ]
a
© Université de Marne-la-Vallée