java - quién - tabla de codigo bytecode
Programación en bytecode Java (6)
¡Podrías probar 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
Lo compilas usando:
> java -jar jasmin.jar hello.j
Y luego lo ejecutas como cualquier clase:
> java HelloWorld Hello World.
Actualizar
Veo que su pregunta menciona "sin usar Javac o Java". ¿Podrías aclarar cómo te refieres a esa declaración?
Estoy buscando escribir un programa corto (tal vez un Hello World) en el código de bytes de Java. Solo quiero escribir el bytecode usando mi editor de texto y ejecutarlo. ¿Cómo haría esto? ¿Tienes un ejemplo? ¡Gracias!
El código de bytes se escribe como bytes reales, que normalmente no son fácilmente editables por un editor de texto normal.
Esto significa que necesitará algo que convierta una representación textual a binario. Un lugar razonable para comenzar sería un ensamblador como Jasmin .
Este chico te guía a través del proceso de escribir un archivo de clase de un programa de hello world paso a paso. Cosas bastante emocionantes :-) https://medium.com/@davethomas_9528/writing-hello-world-in-java-byte-code-34f75428e0ad
He creado un nuevo ensamblador de bytecode de Java que es compatible con Jasmin con versiones anteriores, pero también agrega muchas características nuevas y simplifica un poco la sintaxis.
Aquí hay un ejemplo de cómo podrías escribir un programa 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
También he escrito un tutorial sobre ensamblado de bytecode . Actualmente solo cubre Hello, World, pero puedo continuar si hay interés.
Tal vez este artículo pueda ayudarlo a comenzar: Conceptos básicos de Bytecode (un poco viejo, pero obtendrá la idea).
El formato de archivo de clase también será útil: D