JVM指令中的字母'a',如'aload'或'areturn',代表什么意思?

4

'aload' 或 'areturn' 这类 JVM 指令中的 'a' 指的是什么?我知道它们用于引用,但为什么它们被命名为 'aload'、'astore' 等而不是 'rload'、'rstore' 等呢?

1个回答

10
我相信在对象引用只是指向堆内存的一个普通地址时,历史上'a'代表着'address'。
支持这个想法的证据可以在Sun Microsystems的K虚拟机中找到,这是Java ME的第一款Java虚拟机之一。该源代码可以从CLDC 1.1 RI页面下载。
来自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

{{链接1:这里}}


2
它还符合指令astore可以存储类型为returnaddress的值(直到Java 6)的事实... - Holger
那么 aaload 的意思是什么? - shaoyihe
2
@shaoyihe 对于第一个 'a' 表示 'address',第二个 '-' 表示 'array'。该指令从数组中加载一个引用。 - apangin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接