Mips 连续除法
Mips Continuous Divison
我正在尝试以 mips 实现连续除法
function_1:
while:
# a % 2 == 0
DIV $s0,
MFHI $t1
bne $t1, [=10=], exit
# b % 2 == 0
DIV $s1,
MFHI $t2
bne $t2, [=10=], exit
j while
exit:
jr $ra
出于某种原因,检查 a 是否偶数有效,但检查 b
是否偶数无效。即使 a
和 b
都是偶数,while 循环中的其余指令也不执行,调用函数后 a 和 b 保持不变。
任何关于我做错了什么的意见都会有所帮助。
谢谢!
您可以通过 andi $t0, $s2, 0x1
检查均匀性,如果 $s2 为偶数,则 $t0 的结果为零。无需使用 div
指令。另外 div $s1,
会将寄存器 16 ($s2) 除以寄存器 2 ($v0),这可能不是您想要的。
我正在尝试以 mips 实现连续除法
function_1:
while:
# a % 2 == 0
DIV $s0,
MFHI $t1
bne $t1, [=10=], exit
# b % 2 == 0
DIV $s1,
MFHI $t2
bne $t2, [=10=], exit
j while
exit:
jr $ra
出于某种原因,检查 a 是否偶数有效,但检查 b
是否偶数无效。即使 a
和 b
都是偶数,while 循环中的其余指令也不执行,调用函数后 a 和 b 保持不变。
任何关于我做错了什么的意见都会有所帮助。
谢谢!
您可以通过 andi $t0, $s2, 0x1
检查均匀性,如果 $s2 为偶数,则 $t0 的结果为零。无需使用 div
指令。另外 div $s1,
会将寄存器 16 ($s2) 除以寄存器 2 ($v0),这可能不是您想要的。