2012-07-11 2 views
1

공식 Jasmin HelloWorld 예가 있습니다.Jasmin HelloWorld에서 aload_0을 사용하는 이유는 무엇입니까?

.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 명령은 무엇입니까? 로컬 var 0은 무엇으로 구성되어 있습니까?

답변

3
이는 (이 경우 Object)는 기본 클래스의 생성자 호출

: 비 정적 방식에서

this.super(); 

를 인덱스 0 하에서 로컬 변수가 항상 this 참조 그렇게 aload_0은 상단의 this 참조 푸시 참조 스택. 그런 다음 invokenonvirtual은 스택 상단의 객체 (this)에 지정된 메소드 (Object/<init>())를 호출합니다.