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。
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。