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_0プッシュします。this次に、スタック ( ) の一番上にあるオブジェクトに対して、invokenonvirtual指定されたメソッド ( ) を呼び出します。Object/<init>()this

于 2012-07-11T21:18:58.480 に答える