Java Jasmin 字节码:为什么消息没有打印在屏幕上?
Java bytecode with Jasmin: why is the message not printed on the screen?
我最近对 Java 字节码产生了兴趣,并创建了以下 Hello World 程序。
打印了"Hello World",但是我不明白为什么不打印"Creating awesome object"。你能帮我找出我做错了什么吗?
.class public HelloWorld
.super java/lang/Object
.method public <init>()V
.limit stack 2
aload_0 ; push 'this' unto stack
invokespecial java/lang/Object/<init>()V ; invoke constructor
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Creating awesome object!"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method
.method public static main([Ljava/lang/String;)V
.limit stack 2
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Hello world"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method
我不太了解 Java 字节码,但在我看来你没有在 main
中创建 HelloWorld
的实例。如果您不创建实例,则不会调用构造函数,因此您拥有它。 :)
我最近对 Java 字节码产生了兴趣,并创建了以下 Hello World 程序。
打印了"Hello World",但是我不明白为什么不打印"Creating awesome object"。你能帮我找出我做错了什么吗?
.class public HelloWorld
.super java/lang/Object
.method public <init>()V
.limit stack 2
aload_0 ; push 'this' unto stack
invokespecial java/lang/Object/<init>()V ; invoke constructor
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Creating awesome object!"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method
.method public static main([Ljava/lang/String;)V
.limit stack 2
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Hello world"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method
我不太了解 Java 字节码,但在我看来你没有在 main
中创建 HelloWorld
的实例。如果您不创建实例,则不会调用构造函数,因此您拥有它。 :)