:: Enseignements :: Master :: M2 :: 2013-2014 :: Machine Virtuelle (et bazard autour ...) ::
[LOGO]

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.

  1. 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 ?
  2. Faire en sorte que le code précédent fonctionne.
    Note: Il existe une méthode cosnstant dans MethodHandles.
  3. A quoi servent les lignes commentées dans le main ?
    Tester aussi dans le cas où le script est vide.
  4. Vérifier que le rséultat de l'exécution d'un script vide est NIL.
  5. Faite en sorte que le code suivant fonctionne
              + 3
             

    Note: Il existe une méthode identity dans MethodHandles.
  6. Faite de même avec '-' et '!'.
  7. Ajouter l'implantation de l'ensemble des opérations binaires, +, -, *, /, % ainsi que ==, !=, < <=, > et >=.
  8. Faite en sorte que le code de création d'une lambda fonctionne.
               foo = |x, y| [ x + y ]
               foo
             
  9. 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)
             
  10. Implanter APPLY et vérifier qu'il fonctionne avec le code suivant
               a = |x, y| [ 1 + x * y ]
               a