Dalvik虚拟机(DVM)具有基于寄存器的架构,而不是基于堆栈的Java虚拟机(JVM)。所以我假设Android应用程序的局部变量存储在寄存器中。我对么?如果没有,请纠正我。如果是,寄存器使用什么样的存储器?寄存器是智能手机上CPU(中央处理器)的一部分吗?这些寄存器位于手机硬件中的哪个位置?
答案 0 :(得分:0)
来自https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html:
因为在实践中,一种方法需要超过16个寄存器并不常见,并且因为需要8个以上的寄存器是相当普遍的,所以许多指令仅限于寻址前16个寄存器。在合理可能的情况下,指令允许引用最多256个寄存器。此外,某些指令具有允许更大寄存器计数的变体,包括一对可以寻址v0-v65535范围内的寄存器的全能移动指令。在没有可用于寻址所需寄存器的指令变量的情况下,期望寄存器内容从原始寄存器移动到低寄存器(在操作之前)和/或从低结果寄存器移动到高注册(手术后)。
寄存器位于Dalvik VM中 - 非本机Android代码不直接在CPU上运行,而是在VM中运行。显然,本机代码非常不同。