首页 文章

'a'在'aload'或'areturn'等JVM指令中的含义是什么?

提问于
浏览
2

“aoad”或“areturn”等JVM指令中的'a'是什么意思?我知道他们在引用上运行,但为什么它们被命名为'aload','astore'等而不是'rload','rstore'等?

1 回答

  • 6

    我相信历史上'a'代表'地址',因为对象引用只是堆中的普通地址 .

    对于这个想法的支持可以在Sun Microsystems的K virtual machine的源代码中找到 - 这是Java ME的第一个Java虚拟机之一 . 来源可以从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
    

    here

相关问题