MIPS while 循环
MIPS while loop
我正在为一个 mips 程序开发一个 while 循环,该程序可以生成彩票中奖的几率。这是我到目前为止所拥有的。如果您认为这行得通,您能建议一下吗?使用 3 个球的 59 个选秀权的示例。
Load 59 into $t0
Load 3 into $t1
Load 1 into $t2
Load 1 into $t3
Loop: while $t1 > 0
Divide $t2 by $t0 and put in $t4
Multiply $t4 by $t3 and put in $t3
Subtract $t1 by 1 #subtracts balls by 1
Subtract $t0 by 1 #subtracts max picks by
**repeat loop**
有人可以告诉我这在 mips 中是否可行,因为我正在开发我的第一个程序并且只有 Java 背景。
是的,这是可能的,但你必须把它放在浮点寄存器 $f0 ... $f31:
li $t0 , 59 // values assignment to temporary registers
li $t1 , 3
mtc1 $t0,$f0 //move from int register to float-point register
cvt.s.w $f0,$f0 //Convert int values to float-point values
mtc1 $t1,$f1
cvt.s.w $f1,$f1 //Convert int values to float-point values
li $t2 , 1
li $t3 , 1
mtc1 $t2, $f2
cvt.s.w $f2,$f2
mtc1 $t3, $f3
cvt.s.w $f3,$f3
li $t6 , 1
mtc1 $t6, $f6
cvt.s.w $f6,$f6
//Start of the while loop
li $t5, 0
mtc1 $t5, $f5
cvt.s.w $f5,$f5
while : c.gt.s $f1, $f5
bc1f endwhile
//checks the intital condition and if it's false jump to endwhile
div.s $f4,$f2,$f0 // $f4 = $f2/$f0
mult.s $f3, $f3 ,$f4 // $f3 = $f3 * $f4
sub.s $f0, $f0, $f6
sub.s $f1, $f1, $f6
b while //jump to label while
endwhile: // your code
如果你有任何问题,也许你可以查看这个网页,认为这是一个很好的参考:http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm
http://www.cim.mcgill.ca/~langer/273/12-coprocessors.pdf
我正在为一个 mips 程序开发一个 while 循环,该程序可以生成彩票中奖的几率。这是我到目前为止所拥有的。如果您认为这行得通,您能建议一下吗?使用 3 个球的 59 个选秀权的示例。
Load 59 into $t0
Load 3 into $t1
Load 1 into $t2
Load 1 into $t3
Loop: while $t1 > 0
Divide $t2 by $t0 and put in $t4
Multiply $t4 by $t3 and put in $t3
Subtract $t1 by 1 #subtracts balls by 1
Subtract $t0 by 1 #subtracts max picks by
**repeat loop**
有人可以告诉我这在 mips 中是否可行,因为我正在开发我的第一个程序并且只有 Java 背景。
是的,这是可能的,但你必须把它放在浮点寄存器 $f0 ... $f31:
li $t0 , 59 // values assignment to temporary registers
li $t1 , 3
mtc1 $t0,$f0 //move from int register to float-point register
cvt.s.w $f0,$f0 //Convert int values to float-point values
mtc1 $t1,$f1
cvt.s.w $f1,$f1 //Convert int values to float-point values
li $t2 , 1
li $t3 , 1
mtc1 $t2, $f2
cvt.s.w $f2,$f2
mtc1 $t3, $f3
cvt.s.w $f3,$f3
li $t6 , 1
mtc1 $t6, $f6
cvt.s.w $f6,$f6
//Start of the while loop
li $t5, 0
mtc1 $t5, $f5
cvt.s.w $f5,$f5
while : c.gt.s $f1, $f5
bc1f endwhile
//checks the intital condition and if it's false jump to endwhile
div.s $f4,$f2,$f0 // $f4 = $f2/$f0
mult.s $f3, $f3 ,$f4 // $f3 = $f3 * $f4
sub.s $f0, $f0, $f6
sub.s $f1, $f1, $f6
b while //jump to label while
endwhile: // your code
如果你有任何问题,也许你可以查看这个网页,认为这是一个很好的参考:http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm http://www.cim.mcgill.ca/~langer/273/12-coprocessors.pdf