# La machine virtuelle à pile.

Une machine pédagogique pour donner une idée de ce qu'est l'assembleur.

Dans le cadre d'un cours de compilation, par exemple en L3 informatique, on peut demander aux étudiants de coder un compilateur qui va transcrire un langage de haut niveau similaire à du python (sans objets et avec quelques types simples entiers, flottants, tableaux) vers du code MVàP.

## Contenu du répertoire.
* add.mvap		   Un exemple simple de programme 
* 3n+2.mvap		   Un exemple moins simple de programme 
* test.mvap		   Un exemple avec appel de fonction

* MVaP.jar                 Une archive java qui propose 2 exécutables
                           MVaPAssembler (assemble en un binaire)
                           CBaP (interprète le binaire).
                           
* antlr-4.5.2-complete.jar Une archive java contenant de nombreux binaires permettant d'écrire des compilateurs sur lequel le code de la MVàP s'appuit.

## Pour utiliser la MVàP

Il faut avoir java d'installé sur sa machine (c'est le cas si vous passez par proxmox des machines de l'IUT).

** Pour exécuter du code mvap, il faut :

     1- Assembler :
 $ java -cp antlr-4.5.2-complete.jar:MVaP.jar MVaPAssembler add.mvap
     ou avec des traces (option -d) :
 $ java -cp antlr-4.5.2-complete.jar:MVaP.jar MVaPAssembler -d add.mvap
     ce qui produit le fichier add.mvap.cbap

Le fichier .cbap (code binaire à pile) est du binaire que la machine peut exécuter.

     2- Exécuter :
 $ java -jar MVaP.jar add.mvap.cbap
     ou pour mieux comprendre avec des traces :
 $ java -jar MVaP.jar -d add.mvap.cbap