我有一个我感兴趣的查询,我想要一个完整的解释,因为我找不到任何答案,但任何人都可以向我解释JVM(Java虚拟机)如何使用堆栈和堆栈帧来组织它的计算?
答案 0 :(得分:3)
Java字节码是所谓的stack-oriented programming language。许多虚拟机使用此模型 - 与物理机的体系结构形成对比。
以下是一个例子:
public static int foobar(int value) {
return value + 42;
}
此方法的Java字节代码如下所示:
iload_0
bipush 42
iadd
ireturn
这些说明不使用寄存器。相反,他们使用堆栈进行计算:
42
推入堆栈。所有其他Java字节码操作都是一样的。没有可以使用的寄存器。所有操作都将元素推入和移出堆栈。