Alf*_*red 4 assembly mips division
在MIPS中划分的伪指令是什么?就像有一个伪乘法指令是MIPS"mul",它使生活更容易一些.我正在使用QT Spim.
问候
要执行整数除法,您可以使用div $t1, $t2, $t3哪个将设置$t1为整数除法$t2/$t3,或者div $t1, $t2, imm其中imm是立即数.
同样,要计算整数除法的余数,可以使用rem $t1, $t2, $t3或rem $t1, $t2, imm
这些伪指令基本上会做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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18660 次 |
| 最近记录: |