在java字节码中,“putfield”指令要求堆栈顶部为值,并将堆栈的top-1作为引用。为什么不相反呢?
在我的讲义中被问到,我找不到答案。
答案 0 :(得分:1)
顺序实际上并不重要,因为VM和编译器可以很容易地实现。但Sun选择让较低的参数在堆栈中显得较低。
您不仅可以使用putfield
看到这一点,还可以使用许多其他指令,例如数组加载和存储以及方法调用。他们都遵守同样的惯例。我能想到的唯一解释是这种方式更直观。
如果从左到右从左到右读出堆栈,那么堆栈上的参数将与方法签名或原始源代码中的参数具有相同的顺序。如果你想以另一种方式做到这一点,那么程序员必须在心理上将堆栈视为逆转,这不是什么大问题,但可能不那么直观。