bnez MIPS指令的编码是什么?

bnez MIPS指令的编码是什么?,mips,Mips,如果循环地址为0x00012344,最后一条指令的编码是什么 Loop: addu $a0, $0, $t0 ori $v0, $0, 4 syscall addi $t0, $t0, -1 bnez $t0, Loop 最后一条指令相当于: bne $t0, $0, Loop 但是,我该如何在机器代码中编写它 我就是这样得到的: 000101 01000 00000 iiiii iiiii iiiiii 我不知道该做什么,但因为我在这里。循环的地址

如果循环地址为0x00012344,最后一条指令的编码是什么

Loop:
    addu $a0, $0, $t0
    ori $v0, $0, 4
    syscall
    addi $t0, $t0, -1
    bnez $t0, Loop
最后一条指令相当于:

bne $t0, $0, Loop
但是,我该如何在机器代码中编写它

我就是这样得到的:

000101 01000 00000 iiiii iiiii iiiiii

我不知道该做什么,但因为我在这里。循环的地址为0x00012344,但这是一个17位二进制数。在MIPS中,我只有16位分支使用偏移量(左移2个位置),而不是绝对地址

BNE——不等边分支

说明:

如果两个寄存器不相等,则执行分支

操作:

如果$s!=$t提前(偏移量>2=0xFFFB) 您也可以直接通过字数进行计算:

  • 循环
    地址是BNEZ指令中的-4条指令
  • 额外-1,因为PC已增加:-5
  • -5=-(0x5)=0xFFFB
所以我们得到了
i
部分的0xFFFB;所以整个指令是
0x1500FFFB

顺便说一句,你可以检查这与任何MIPS汇编或

(火星模拟器截图)


你能告诉我循环偏移量是多少吗?你能告诉我完整的编码吗?这样我就可以按照/确认你告诉我的内容了吗?这是机器代码吗?000101 01000 00000 0100100011010001我不知道确切的编码,因为我不知道循环和BNE地址。我的帖子中有循环地址,我之前的评论是:“循环和BNE地址”。
Loop:
    addu $a0, $0, $t0
    ori $v0, $0, 4
    syscall
    addi $t0, $t0, -1
    bnez $t0, Loop