为什么我们不能将(bne-beq)寄存器与立即数(Assembly-MIPS)进行比较?

Tho*_*mas 2 assembly mips

例如,在添加我们有addi添加寄存器和立即,为什么在这种情况下,我们不能有bnei或beqi ...

我应该回答这个问题,但我不确定......有什么帮助吗?

Mic*_*ael 5

原因是指令编码:

这两个ADDIBNE/BEQI型指令.但是,虽然ADDI指令中的立即字段用于存储加法的立即操作数,但它用于存储分支偏移量BEQ/BNE.

可能有MIPS汇编程序允许您在条件分支指令中使用立即操作数,但它们会将这些伪指令扩展为多个实际指令.

  • “BEQ/BNE”的目标地址不存储为绝对地址,而是存储为相对于当前指令位置的偏移量。该偏移量必须存储在 32 位指令字中的某处,而该“某处”恰好是立即字段。这显示在我的答案中链接到的页面上(整数指令表的“条件分支”行)。 (2认同)