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