:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: Compilation ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Génération de code Jasmin |
Le but de ce TD est de se familiariser avec la génération de code Jasmin.
Jasmin
Jasmin est un assembleur open-source pour créer des fichiers classes à partir d'une syntaxe ressemblant à de l'assembleur et lisible en ASCII.
Il utilise des ensembles d'instructions de la Machine Virtuelle Java.
Télécharger l'archive
jasmin.jar.
Vous pouvez vous aider du
guide officiel et d'un
tutoriel basé sur des exemples.
Il existe aussi un
cours intéressant.
Nous vous conseillons d'utiliser la liste des instructions décrites
ici.
Exercice 1 - Génération de classes simples
Exercice 2 - Expressions booléennes en Jasmin
Ecrire un visiteur qui simule en jasmin le calcul d'une expression booléenne.
Par exemple, l'expression 'true and (not false or true)' pourrait générer le code Jasmin suivant :
Calculer automatiquement la taille maximale de la pile.
Exercice 3 - Définition et affichage de formes graphiques
Le but de l'exercice est d'écrire un analyseur qui génère des formes graphiques dans une fenêtre.
Par exemple, le script ci-dessous permet de générer l'exemple ci-dessus.
Le cadre graphique vous est fourni.
La classe principale est
Shapes.
Elle génère une fenêtre ayant un composant
ShapeComponent.
Ce composant utilise la méthode statique
getList() de la classe
GeneratedClass,
qui retourne une liste de
MyShape qui seront affichées dans le composant.
L'ensemble des classes utilisées dans l'exemple se trouvent dans l'archive
shapes.jar.
Voici aussi un exemple de source java pour
GeneratedClass.java.
Il vous est demandé d'écrire un analyseur utilisant le fichier
shapes.ebnf.
Il générera un fichier jasmin permettant d'obtenir la classe
GeneratedClass.class correspondante.
Indication: écrire d'abord à la main le fichier jasmin correspondant à l'exemple.
© Université de Marne-la-Vallée