3

在 java 字节码中,“putfield”指令期望栈顶是一个值,栈顶 1 是一个引用。为什么不是反过来呢?

在我的课堂笔记中被问到,我找不到答案。

4

1 回答 1

1

顺序实际上并不重要,因为 VM 和编译器都可以很容易地实现。但是 Sun 选择让较低的参数在堆栈中显示在较低的位置。

您不仅可以使用putfield,还可以使用许多其他指令来查看这一点,例如数组加载和存储以及方法调用。他们都遵守相同的约定。我能想到的唯一解释是这种方式更直观。

如果您从左到右从下到上读取堆栈,则堆栈上的参数将与方法签名或原始源代码中的参数具有相同的顺序。如果您想以另一种方式进行操作,程序员将不得不在心理上将堆栈视为颠倒的,这没什么大不了的,但可能不太直观。

于 2013-04-05T13:42:43.590 回答