我有一个我感兴趣的查询,我想要一个完整的解释,因为我在任何地方都找不到任何答案,但是谁能向我解释 JVM(Java 虚拟机)如何使用堆栈和堆栈帧来组织其计算?
问问题
1033 次
1 回答
3
Java 字节码是一种所谓的面向堆栈的编程语言。许多虚拟机都使用此模型- 与物理机的体系结构形成对比。
这是一个例子:
public static int foobar(int value) {
return value + 42;
}
该方法的 Java Bytecode 如下所示:
iload_0
bipush 42
iadd
ireturn
这些指令不使用寄存器。相反,他们使用堆栈进行计算:
- 将第一个参数压入堆栈。
- 将常量压
42
入堆栈。 - 从堆栈中弹出两个元素,添加它们并将结果压入堆栈。
- 从堆栈中弹出顶部元素并返回它。
所有其他 Java 字节码操作都是一样的。没有可以使用的寄存器。所有操作将元素推入和/或弹出堆栈。
于 2013-08-26T18:34:09.297 回答