MIPS 到机器码转换

MIPS to Machine Code Conversion

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

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