Mips Continuous Divison

时间:2016-02-27 17:49:55

标签: mips division mips32

我试图在mips中实现连续分割

function_1:

    while:
        # a % 2 == 0
        DIV  $s0, $2 
        MFHI $t1
        bne  $t1, $0, exit

        # b % 2 == 0
        DIV  $s1, $2  
        MFHI $t2
        bne  $t2, $0, exit

        j while
   exit:

jr $ra

出于某种原因,检查a是否有效,但检查if b是否有效。即使ab都是偶数,while循环中的其余指令也不会执行,并且a和b在调用函数后保持不变。

对我做错的任何意见都会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过andi $t0, $s2, 0x1检查均匀度,如果$ s2为偶数,则会在$ t0中得到零结果。无需使用div指令。同样div $s1, $2将寄存器16($ s2)除以寄存器2($ v0),这可能不是你想要的。