官方Jasmin HelloWorld示例的开始。
.class public NoJad.j
.super java/lang/Object
.method public <init>()V
aload_0
invokenonvirtual java/lang/Object/<init>()V
return
.end method
.method public static main([Ljava/lang/String;)V
.limit stack 2
...
为什么有aload_0
指令? local var 0包含什么?
答案 0 :(得分:3)
它正在调用基类的构造函数(在这种情况下为Object
):
this.super();
在非静态方法中,索引0
下的局部变量始终为this
引用,因此aload_0
会在参考堆栈的顶部推送this
引用。然后invokenonvirtual
在堆栈顶部的对象(Object/<init>()
)上调用指定的方法(this
)。