Je cherche à écrire un programme court (peut-être un Hello World) en bytecode Java. Je veux juste écrire le bytecode en utilisant mon éditeur de texte et l'exécuter. Comment je ferais ça? Vous avez un exemple? Merci!
Tu pourrais essayer Jasmin !
.class public HelloWorld
.super Java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit stack 3
.limit locals 1
getstatic Java/lang/System/out Ljava/io/PrintStream;
ldc "Hello World."
invokevirtual Java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method
Vous le compilez en utilisant:
> Java -jar jasmin.jar hello.j
Et ensuite vous le lancez comme n'importe quelle classe:
> Java HelloWorld Bonjour tout le monde.
Mise à jour
Je vois que votre question mentionne "sans utiliser Javac ou Java". Pourriez-vous préciser comment vous entendez cette déclaration?
J'ai créé un nouvel assembleur de bytecode Java qui est rétro-compatible avec Jasmin, mais qui ajoute également de nombreuses nouvelles fonctionnalités et simplifie légèrement la syntaxe.
Voici un exemple de la manière dont vous pourriez écrire un programme Hello World.
.class public hello
.super Java/lang/Object
.method public static main : ([Ljava/lang/String;)V
.limit stack 10
.limit locals 10
getstatic Java/lang/System out Ljava/io/PrintStream;
ldc "Hello World!"
invokevirtual Java/io/PrintStream println (Ljava/lang/Object;)V
return
.end method
J'ai également écrit un tutoriel sur l'assemblage de bytecode . Il ne couvre actuellement que Bonjour, Monde, mais je peux le poursuivre s’il ya un intérêt.
Le code d'octet est écrit sous forme d'octets réels, qui ne sont normalement pas facilement modifiables par un éditeur de texte normal.
Cela signifie que vous aurez besoin de quelque chose qui convertit une représentation textuelle en binaire. Un endroit raisonnable pour commencer serait un assembleur comme Jasmin .
Peut-être que cet article peut vous aider à démarrer: Notions de base sur Bytecode (un peu vieux, mais vous aurez l’idée).
Le format de fichier class sera également utile: D
Ce gars vous guide ici tout au long du processus d’écriture pas à pas d’un fichier de classe d’un programme hello world. Des choses très excitantes :-) https://medium.com/@davethomas_9528/writing-hello-world-in-Java-byte-code-34f75428e0ad