Assembly 关于堆栈操作的小帮助!
堆栈指令:Assembly 关于堆栈操作的小帮助!,assembly,stack,Assembly,Stack,堆栈指令: PUSH A PUSH B SUB POP X 是X=A-B 或 X=B-A 先谢谢你!:) 理论上,SUB可以用任何一种方式定义(正如@delnan所说) 在实践中,大多数基于堆栈的语言或指令集将遵循以下约定:52-将是3,并且可以将堆栈操作视为push 5;推2;减去。因此,在您的示例中,X=A-B将是更典型的预期结果 (一个真实的例子:在JVM中。)因此,如果我必须用堆栈操作演示A*(B-C)/D-E,那么我做得对: PUSH A PUSH B PUSH C SUB MUL
PUSH A
PUSH B
SUB
POP X
是X=A-B
或
X=B-A
先谢谢你!:) 理论上,
SUB
可以用任何一种方式定义(正如@delnan所说)
在实践中,大多数基于堆栈的语言或指令集将遵循以下约定:52-
将是3
,并且可以将堆栈操作视为push 5;推2;减去
。因此,在您的示例中,X=A-B
将是更典型的预期结果
(一个真实的例子:在JVM中。)因此,如果我必须用堆栈操作演示
A*(B-C)/D-E
,那么我做得对:
PUSH A
PUSH B
PUSH C
SUB
MUL
PUSH D
DIV
PUSH E
SUB
然后,堆栈顶部将有A*(B-C)/D-E
计算结果。实际上,这需要使用零地址格式寄存器来完成,我相信使用堆栈这种方式就是这样做的
非常感谢你的帮助
非常感谢。取决于
SUB
;)的定义)