5

MIPS中除法的伪指令是什么?就像有一个乘法伪指令是 MIPS“mul”,它使生活更轻松。我正在使用 QT Spim。

问候

4

1 回答 1

6

要执行整数除法,您可以使用div $t1, $t2, $t3which 将设置$t1为 的整数除法$t2/$t3,或者div $t1, $t2, immimm 是立即数。

同样,要计算整数除法的余数,您可以使用rem $t1, $t2, $t3rem $t1, $t2, imm

这些伪指令基本上会执行 a div $t1, $t2,它将结果存储在特殊寄存器中(用于商LOHI余数),然后通过 和 将这些值移动到目标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
于 2012-11-20T16:20:57.910 回答