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

Is PUSH instruction in assembly language a zero address instruction or one address instruction?

我读到 ADD 和 MUL 指令在 Stack 中实现时是零地址指令,但没有任何地方讨论 PUSH 和 POP 指令是单地址指令还是零地址指令。 以下是 Morris Mano 的《计算机体系结构》的摘录:

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

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

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

很明显你的考试评分错误,将 PUSH/POP 与那台堆栈机器中的 ADD/MUL 指令混在一起。即使在 .

等其他 ISA 中

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