微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇编语言中的PUSH指令是零地址指令还是一个地址指令?

如何解决汇编语言中的PUSH指令是零地址指令还是一个地址指令?

我读到,在堆栈中实现时,ADD和MUL指令是零地址指令,但关于PUSH和POP指令是一个地址指令还是零地址指令,我们都没有讨论。 这是Morris Mano的计算机架构摘录:

enter image description here

它在我们的考试中被问到,并回答为零地址指令,但我很确定它必须是一个地址指令。请有人帮忙。

解决方法

PUSH / POP显然是1个显式地址,因为它们有一个显式操作数。其他(隐式)操作数是堆栈指针和堆栈内容。

您从教科书中引用的文本甚至说PUSH和POP在其机器代码中需要一个地址字段。

您的考试中明显有评分错误,将PUSH / POP与该堆栈机中的ADD / MUL指令混在一起。即使在诸如x86,PUSH/POP are 1-address instructions之类的其他ISA中也是如此。

只有在某些固定寄存器的内容被推送的情况下,PUSH才能为0地址,并且必须先将数据放入该寄存器才能推送。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。