bnez MIPS指令的编码是什么?
如果循环地址为0x00012344,最后一条指令的编码是什么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 我不知道该做什么,但因为我在这里。循环的地址
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