:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: Compilation ::
[LOGO]

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.