JVM指令的基于堆栈的体系结构的优点

时间:2012-05-09 11:28:35

标签: java

为什么Java虚拟机的设计没有寄存器来保存中间数据值?相反,每件事都在堆栈上工作。有一个基于堆栈的架构而不是注册的任何特定优势?

2 个答案:

答案 0 :(得分:6)

Java旨在从头开始实现便携。但是,如果它依赖于您运行它的平台上存在的某些寄存器,那么如何保持字节码可移植?特别是考虑到它原本打算(也)在机顶盒上运行,这些机顶盒与主流PC的处理器架构截然不同。

JVM实际上只知道可用的寄存器和其他硬件特定的东西。然后,JIT编译器可以(并将)根据需要对这些进行优化。

答案 1 :(得分:2)

在设计虚拟机时,放置堆栈而不是一组虚拟寄存器要容易得多。如果主机有一个堆栈,就像它们一样,没有什么可做的,如果它有寄存器,你仍然可以将它们用于其他东西:临时工等。如果另一方面主机没有寄存器,只有一个堆栈,并且你围绕寄存器设计你的VM,你有一个主要的实现问题,因为你必须使用本机堆栈,这将干扰它作为虚拟堆栈的使用。