1

我读到在堆栈中实现的 ADD 和 MUL 指令是零地址指令,但是没有任何地方讨论 PUSH 和 POP 指令是一个地址指令还是零地址指令。以下是莫里斯·马诺 (Morris Mano) 的计算机体系结构的摘录: 在此处输入图像描述

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

4

1 回答 1

4

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

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

显然,您的考试存在评分错误,将 PUSH/POP up 与该堆栈机器中的 ADD/MUL 指令混合在一起。即使在 x86 等其他 ISA 中,PUSH/POP 也是 1-address 指令

如果有某个固定寄存器的内容被推送,PUSH 只能是 0 地址,并且您必须先将数据放入该寄存器才能推送它。

于 2020-11-08T16:47:39.133 回答