我正在编写一个小程序来划分MIPS(主要是作为练习,我知道有一个伪指令,我用它进行测试)。由于某种原因,结果是它应该是的两倍或一半。我不确定为什么。
signextLoop:
bge $t1 , $t0 , signextLoopEnd #will shift divisor until greater than dividend
sll $t1 , $t1 , 1
j signextLoop
signextLoopEnd:
divi32:
blt $t0 , $t1 shift32 #if dividend < divisor jump to shifting
xor $t0 , $t0 , $t1
addi $t4 , $t4 , 1
shift32:
srl $t1 , $t1 , 1
sll $t4 , $t4 , 1
bgt $t0 , $zero , divi32 #if dividend > 0 keep dividing; else go to output