堆栈说明:
PUSH A
PUSH B
SUB
POP X
X = A-B 或 X = B-A?
提前谢谢! :)
答案 0 :(得分:2)
理论上,SUB
可以任意一种方式定义(如@delnan所说)。
实际上,大多数基于堆栈的语言或指令集都遵循Reverse Polish notation的约定:5 2 -
将是3
,并且可以将堆栈操作视为{ {1}}。因此,在您的示例中,push 5; push 2; subtract
将是更典型的预期结果。
(一个真实的例子:JVM中的isub
。)
答案 1 :(得分:0)
因此,如果我必须使用堆栈操作演示A*(B-C)/D-E
,我就是这样做的:
PUSH A
PUSH B
PUSH C
SUB
MUL
PUSH D
DIV
PUSH E
SUB
然后,堆栈的顶部将具有A*(B-C)/D-E
评估的内容。实际上这需要使用零地址格式寄存器完成,我相信使用堆栈就是这样做的。
非常感谢您的帮助。
非常感谢。