MIPS中划分的伪指令

Alf*_*red 4 assembly mips division

在MIPS中划分的伪指令是什么?就像有一个伪乘法指令是MIPS"mul",它使生活更容易一些.我正在使用QT Spim.

问候

gus*_*bro 5

要执行整数除法,您可以使用div $t1, $t2, $t3哪个将设置$t1为整数除法$t2/$t3,或者div $t1, $t2, imm其中imm是立即数.

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

这些伪指令基本上会做div $t1, $t2,其存储在结果LOHI特殊寄存器(为商和余数),然后借助于移动这些值,以目标寄存器mfhimflo.

要执行浮点除法,您需要使用浮点寄存器$ 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
Run Code Online (Sandbox Code Playgroud)