例如在 add 我们有 addi 用于添加寄存器和立即数,为什么在这种情况下我们不能有 bnei 或 beqi...
我应该回答这个问题,但我不确定......有什么帮助吗?
原因是指令编码:
ADDI
和都是I- Type指令BNE/BEQ
。但是,指令中的立即数字段用于存储加法的立即数操作数,而在.ADDI
BEQ/BNE
可能有 MIPS 汇编器允许您在条件分支指令中使用立即操作数,但它们会将这些伪指令扩展为多个实际指令。
在带有标志的体系结构中,分支指令通常遵循比较指令,该指令可以比较寄存器和立即数并设置适当的标志(通常称为 CMP,但通常其他指令也可以设置标志)。然后分支只检查标志。
(这是在向 MIPS 澄清问题之前发布的,它不使用标志)
您不想使用 16 位立即数作为跳转地址,因为这限制了您可以跳转的位置。MIPS 有 32 位的地址。如果您只使用 16 位,那么您使用的可能地址的一小部分。