MIPS中除法的伪指令是什么?就像有一个乘法伪指令是 MIPS“mul”,它使生活更轻松。我正在使用 QT Spim。
问候
要执行整数除法,您可以使用div $t1, $t2, $t3
which 将设置$t1
为 的整数除法$t2/$t3
,或者div $t1, $t2, imm
imm 是立即数。
同样,要计算整数除法的余数,您可以使用rem $t1, $t2, $t3
或rem $t1, $t2, imm
这些伪指令基本上会执行 a div $t1, $t2
,它将结果存储在特殊寄存器中(用于商LO
和 HI
余数),然后通过 和 将这些值移动到目标mfhi
寄存器mflo
。
要执行浮点除法,您需要使用浮点寄存器 $f0 到 $f31。一旦您将浮点数存储在其中一些寄存器中(正确编码为浮点数,例如 in$f1
和) ,$f2
您就会发出div.s $f0, $f1, $f2
指令以获取$f0
. $f1/$f2
现在,要获得余数,您可以用截断的结果减去除法的结果。例如:
li $a1, 20
mtc1 $a1, $f1
cvt.s.w $f1, $f1 # $f1 = 20
li $a1, 7
mtc1 $a1, $f2
cvt.s.w $f2, $f2 # $f2 = 7
div.s $f0, $f1, $f2 # $f0 = 20/7
trunc.w.s $f3, $f0
cvt.s.w $f3, $f3 # $f3 = trunc(20/7)
sub.s $f4, $f0, $f3 # $f4 = remainder of 20/7