MIPS到机器代码转换

MIPS到机器代码转换,mips,Mips,如何知道最后一条指令的16位地址字段,即 bne$v1,$0,重复是否为十进制形式的-8?下面给出了此指令的32位机器代码。这是一个准备问题,其解决方案已提供给我们,但我不知道如何编写与repeat标签等价的二进制代码 repeat : lw $v1, 1($a0) add $v0, $v0, $t0 sw $v1, 1($a1) addi $a1, $a1, 1 addi $a1, $a1, 2 add

如何知道最后一条指令的16位地址字段,即
bne$v1,$0,重复
是否为十进制形式的
-8
?下面给出了此指令的32位机器代码。这是一个准备问题,其解决方案已提供给我们,但我不知道如何编写与
repeat
标签等价的二进制代码

repeat : lw $v1, 1($a0)

         add $v0, $v0, $t0
         sw $v1, 1($a1)
         addi $a1, $a1, 1
         addi $a1, $a1, 2
         addi $a2, $a2, 1
         addi $a0, $a0, 3
         bne $v1, $zero, repeat

因为标签的地址在分支指令之前是7个字,而+1是因为MIPS在获取当前指令后立即增加PC(由于流水线),因此偏移量是-8

bne      $v1      $zero         repeat

000101   00011     00000     1111111111111000