我很好奇,为什么 Sun 决定让 JVM 堆栈为基础,而 Google 决定让 DalvikVM 以寄存器为基础?
我想JVM不能真正假设目标平台上有一定数量的寄存器可用,因为它应该是平台独立的。因此,它只是将寄存器分配等推迟到 JIT 编译器。(如我错了请纠正我。)
所以安卓的人想,“嘿,那太低效了,让我们马上去一个基于寄存器的虚拟机......”?但是等等,有多个不同的 android 设备,Dalvik 的目标寄存器是多少?Dalvik 操作码是否针对一定数量的寄存器进行了硬编码?
市场上所有当前的 Android 设备是否具有大致相同数量的寄存器?或者,在 dex 加载期间是否执行了寄存器重新分配?这一切如何结合在一起?