Java 寄存器基VM与基于堆栈的VM之间的主要区别是什么?

Java 寄存器基VM与基于堆栈的VM之间的主要区别是什么?,java,android,jvm,dalvik,Java,Android,Jvm,Dalvik,今天我在读一篇文章,有一句话出现了: Dalvik VM是基于寄存器的,而不是基于堆栈的 那么,寄存器基虚拟机与基于堆栈的虚拟机之间的主要区别是什么? 第二个链接足够回答我的问题: 另一个链接: 从Java源代码级别看,没有概念上的差异。不同之处在于字节码(javac产生的字节码),其中基于堆栈的字节码是以堆栈的形式写入的,而(令人惊讶的是!)对于基于寄存器的模型,字节码是以寄存器的形式写入的。(JIT编译的Java,即使是在“基于堆栈”的体系结构上,也是基于寄存器的。)这个链接将帮助你得到

今天我在读一篇文章,有一句话出现了:

Dalvik VM是基于寄存器的,而不是基于堆栈的

那么,寄存器基虚拟机与基于堆栈的虚拟机之间的主要区别是什么?


第二个链接足够回答我的问题:

另一个链接:


从Java源代码级别看,没有概念上的差异。不同之处在于字节码(javac产生的字节码),其中基于堆栈的字节码是以堆栈的形式写入的,而(令人惊讶的是!)对于基于寄存器的模型,字节码是以寄存器的形式写入的。(JIT编译的Java,即使是在“基于堆栈”的体系结构上,也是基于寄存器的。)这个链接将帮助你得到更多的解释,这是我写的基于机器语言编程的答案。基于寄存器的程序有物理限制,例如一副卡是物理限制。基于堆栈的程序只受内存量和使用列表的限制,或者根据需要将尽可能多的数据推送到堆栈上,然后从堆栈中弹出。因此,新的基于堆栈的版本将减少对内存量或可同时运行的应用程序数量的限制。甚至可能需要一个页面文件来访问sd卡上的内存。