我正在学习使用网站进行练习练习的MIPS大会。
练习2
在每个寄存器$ 1到$ 7中设置相应的位。 即 在寄存器1中设置第1位(并将其余部分清零),在$ 2设置第2位 (并将其余部分清零),等等。只使用一个ori 程序中的指令,将寄存器$ 1中的位置1。 从...开始: 'ori $ 1,$ 0,0x01' 不要使用除此之外的任何ori指令。 注意:寄存器的第1位是右边的第二个,即 (在无符号二进制中)对应于2的第一个幂。
有人可以解释一下吗?
将0x02放入寄存器1是否正确? (我不能使用ori,所以我会使用左移使0x01变成0x02)
这使得寄存器1 == 10(二进制)。因此,寄存器1的第1位是1,其他位是0?
我很困惑,因为MIPS模拟器没有显示前导零。所以我不知道我是否正确这样做。
答案 0 :(得分:0)
是的,你的解释是正确的。
ori $1,$0,0x01 # Initialize $1
sll $2,$1,2 # Set bit 2 or $2
sll $3,$1,3 # Set bit 3 of $3
... # ..and so on for $4..$7
sll $1,$1,1 # Finally set bit 1 of $1
或者:
ori $1,$0,0x01
sll $1,$1,1
sll $2,$1,1
sll $3,$2,1
...