MIPS到机器代码转换

时间:2015-12-17 15:28:23

标签: mips

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

我怎么知道最后一条指令的16位地址字段,即 bne $v1, $zero, repeat是小数形式的-8?下面给出了该指令的32位机器代码。这是一个准备问题,其解决方案是给我们的,但我不明白如何编写repeat标签的二进制等价物。

bne      $v1      $zero         repeat

000101   00011     00000     1111111111111000

1 个答案:

答案 0 :(得分:1)

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