无论如何将寄存器值向右移动但不添加0(如srl那样),使其加1。如果这是不可能的,那么任何其他建议来实现相同的目标将不胜感激。
答案 0 :(得分:1)
您可以通过首先确保要移位的寄存器的最有意义位为1然后执行右移算术(该符号扩展结果)来实现。
例如,假设您想要将4位右移位寄存器$ t0,那么您可以这样做:
lui $at, 0x8000 # Set leftmost bit of $at to 1 and the others to 0
or $t0, $t0, $at # OR into register to be shifter
sra $t0, $t0, 4 # do an arithmetic shift right