2

有官方 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 由什么组成?

4

1 回答 1

4

它正在调用基类的构造函数(Object在本例中):

this.super();

在非静态方法中,索引下的局部变量0始终是this引用,因此将引用aload_0this到引用堆栈的顶部。然后在栈顶( )的一个对象上invokenonvirtual调用指定的方法()。Object/<init>()this

于 2012-07-11T21:18:58.480 回答