1
'aload'또는 'areturn'과 같은 JVM 명령어에서 'a'는 무엇을 의미합니까? 나는 그들이 '참조'에 대해 작동한다는 것을 알고 있지만 'rload', 'rstore'등 대신 'aload', 'astore'등의 이름을 사용하는 이유는 무엇입니까?'aload'또는 'areturn'과 같은 JVM 명령어에서 'a'는 무엇을 의미합니까?
'aload'또는 'areturn'과 같은 JVM 명령어에서 'a'는 무엇을 의미합니까? 나는 그들이 '참조'에 대해 작동한다는 것을 알고 있지만 'rload', 'rstore'등 대신 'aload', 'astore'등의 이름을 사용하는 이유는 무엇입니까?'aload'또는 'areturn'과 같은 JVM 명령어에서 'a'는 무엇을 의미합니까?
저는 역사적으로 'a'는 객체 참조가 힙에 대한 단순한 주소 일 때부터 '주소'를 의미한다고 생각합니다.
이 아이디어에 대한 지원은 Java ME의 첫 번째 Java 가상 머신 중 하나 인 Sun Microsystems의 K virtual machine 소스에서 찾을 수 있습니다. 출처는 CLDC 1.1 RI page에서 다운로드 할 수 있습니다.
조각
kvm/VmCommon/src/bytecodes.c
에서 :
#if STANDARDBYTECODES
SELECT(ILOAD) /* Load integer from local variable */
unsigned int index = ip[1];
pushStack(lp[index]);
DONE(2)
#endif
...
#if STANDARDBYTECODES
SELECT(ALOAD) /* Load address from local variable */
unsigned int index = ip[1];
pushStack(lp[index]);
DONE(2)
#endif
는 또한 명령 'astore' *이 리턴 주소를 (* 자바 6까지) 유형의 값을 저장할 수 있다는 사실과 일치 ... – Holger