0

我有一个我感兴趣的查询,我想要一个完整的解释,因为我在任何地方都找不到任何答案,但是谁能向我解释 JVM(Java 虚拟机)如何使用堆栈和堆栈帧来组织其计算?

4

1 回答 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 回答