"aoad"或"areturn"等JVM指令中的'a'是什么意思?我知道他们在引用上运行,但为什么它们被命名为'aload','astore'等而不是'rload','rstore'等?
我相信历史上'a'代表'地址',因为对象引用只是堆中的普通地址.
可以在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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
236 次 |
最近记录: |