以下代码用于实现指令
sllv $s0, $s1, $s2
它使用寄存器 $s2 中值的最低 5 位来指定寄存器 $s1 应左移的数量:
.data
mask: .word 0xfffff83f
.text
start: lw $t0, mask
lw $s0, shifter
and $s0,$s0,$t0
andi $s2,$s2,0x1f
sll $s2,$s2,6
or $s0,$s0,$s2
sw $s0, shifter
shifter: sll $s0,$s1,0
我知道大多数指令在做什么。
然而,我不明白第二个加载字是如何从移位器加载一些东西的,它本身是一个指令而不是一个词。
此外,正如问题所说,当转换为二进制时,十六进制掩码的值在至少 5 个重要位置没有零,所以我不确定它将如何屏蔽至少 5 个 sig 位置。