如何解决基于堆栈操作的小帮助!
| 堆栈说明:PUSH A
PUSH B
SUB
POP X
是X = A-B
要么
X = B-A?
先感谢您! :)
解决方法
从理论上讲,
SUB
可以用两种方式定义(如@delnan所说)。
实际上,大多数基于堆栈的语言或指令集都将遵循反向波兰语符号的约定:5 2 -
将是ѭ3and,并且在堆栈操作方面可以被视为push 5; push 2; subtract
。因此,在您的示例中,X = A-B
是更典型的预期结果。
(一个真实的示例:JVM中的“ 6”。)
, 因此,如果我必须通过堆栈操作演示A*(B-C)/D-E
,那么我正在这样做:
PUSH A
PUSH B
PUSH C
SUB
MUL
PUSH D
DIV
PUSH E
SUB
然后,堆栈的顶部将具有ѭ7的值。实际上,这需要使用零地址格式寄存器来完成,我相信以这种方式使用堆栈是如何完成的。
非常感谢你的帮助。
高度赞赏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。