:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Compilation ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Génération de Bytecode |
Le but de ce TD est de s'initier à la génération de Bytecode.
Plus spécifiquement, nous tenterons de générer du Bytecode permettant d'évaluer une expression booléenne.
Ressources
Télécharger le module ASM
ici. La commande
java -classpath "asm.jar;asm-util.jar" org.objectweb.asm.util.ASMifierClassVisitor org/domain/package/MyClass.class
permet de donner le code permettant de générer le Bytecode de la classe
MyClass.class.
La Javadoc d'ASM se trouve
ici.
Exercice 1 - Commencer
NOTE : Pour cet exercice, il est interdit d'utiliser Eclipse.
Exercice 2 - Nombres complexes
Ecire un code Java permettant de générer en Bytecode la classe
Complex.class se comportant comme dans le code suivant:
Tester ensuite cette classe en l'important dans une autre classe.
Exercice 3 - Quelques expressions booléennes en Bytecode
-
Ecrire un code Java permettant de générer un classe Java exécutable qui évalue l'expression
true & !true | false et affiche son résultat.
Pour cela, déterminer les opérations élémentaires réalisées sur la pile, calculer la taille maximum de la pile et coder.
-
Même question pour l'expression !(false | false & true).
Exercice 4 - Compilation des expressions booléennes en Bytecode
-
Ecrire une classe SimpleCompilerMain qui permet de compiler l'expression booléenne placée dans un fichier en argument sous la forme d'une classe Java exécutable.
Pour cela, vous repartirez de l'analyseur syntaxique du td6 et vous écrirez un visiteur de l'AST permettant de générer le Bytecode associé à l'expression booléenne:
implémenter une méthode visit() par opération booléenne (ou production de la grammaire).
Dans un premier temps, fixer une taille de pile arbitraire.
-
Dans un deuxième temps, calculer automatiquement la taille de la pile, en fonction des instructions générées.
© Université de Marne-la-Vallée