ioper 命令是 java 虚拟机中的 sub idiv 顺序
ioper commands isub idiv order in java virtualmachine
查看 ioper 命令时,imul 和 iadd 很明显,但如果我有:
sipush 9
sipush 3
sipush 4
堆栈看起来像
4
3
9
如果下一个是isub,我会从3中减去4吗?或 4 中的 3
干杯
指令的语义定义在section 6.5 of the JVM spec. In particular isub中定义如下:
Operand Stack
..., value1, value2 →
..., result
Description
Both value1 and value2 must be of type int
. The values are popped from the operand stack. The int
result is value1 - value2
. The result is pushed onto the operand stack.
符号..., value1, value2
表示value2
在栈顶,value1
在栈顶(栈的其余部分表示为...
因为 isub
没有碰它)。
所以在你的例子中它会是 3 - 4
因为 value1 = 3
和 value2 = 4
.
查看 ioper 命令时,imul 和 iadd 很明显,但如果我有:
sipush 9
sipush 3
sipush 4
堆栈看起来像
4
3
9
如果下一个是isub,我会从3中减去4吗?或 4 中的 3
干杯
指令的语义定义在section 6.5 of the JVM spec. In particular isub中定义如下:
Operand Stack
..., value1, value2 →
..., result
Description
Both value1 and value2 must be of type
int
. The values are popped from the operand stack. Theint
result isvalue1 - value2
. The result is pushed onto the operand stack.
符号..., value1, value2
表示value2
在栈顶,value1
在栈顶(栈的其余部分表示为...
因为 isub
没有碰它)。
所以在你的例子中它会是 3 - 4
因为 value1 = 3
和 value2 = 4
.