我想用Java字节码编写一个简短的程序(也许是一个Hello World)。我只想用文本编辑器编写字节码并运行它。我该怎么做?有一个例子吗?谢谢!
你可以试试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
你用它编译它:
> java -jar jasmin.jar hello.j
然后你就像任何一个类一样运行它:
> java HelloWorld Hello World.
更新
我看到你的问题提到“不使用Javac或Java”。你能澄清一下你的意思吗?
我创建了一个新的Java bytecode assembler,它向后兼容Jasmin,但也添加了许多新功能并略微简化了语法。
这是一个如何编写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
I've also written a tutorial on bytecode assembly。它目前仅涵盖Hello,World,但如果有兴趣,我可以继续。
也许这篇文章可以帮助你入门:Bytecode basics(有点旧,但你会得到这个想法)。
class file format也会派上用场:D
字节代码被写为实际字节,通常不能由普通文本编辑器编辑。
这意味着您需要将文本表示转换为二进制的东西。一个合理的起点是像Jasmin这样的汇编程序。
这个人在这里指导您逐步编写hello world程序的类文件。非常令人兴奋的东西:-) https://medium.com/@davethomas_9528/writing-hello-world-in-java-byte-code-34f75428e0ad