web-dev-qa-db-ja.com

MIPSでより大きい、等しい、より小さい

2つのレジスタ$s0$s1、次の擬似コードをslt(未満に設定)とbeqおよびbne(等しい場合は分岐、次の場合は分岐のみ)を使用してMIPSアセンブリ言語に変換する方法等しくない)命令。

   if ($s0 > $s1) { goto label1 }
   if ($s0 >= $s1) { goto label2 }
   if ($s0 <= $s1) { go to label3 }
10
jaynp
slt $t1,$s1,$s0      # checks if $s0 > $s1
beq $t1,1,label1     # if $s0 > $s1, goes to label1
beq $s1,$s2,label2   # if $s0 = $s2, goes to label2 
beq $t1,$zero,label3 # if $s0 < $s1, goes to label3

擬似コードは順番に実行され、2つの異なるラベルに移動できないと想定しています。

25
glew

私はそれがすべきだと思う:

stl $at, $s1, $s0
bne $at, $zero, label1

stl $t0, $s0, $s1
beq $t0, $zero, label2

stl $t1, $s1, $s0
beq $t1, $zero, label3

label1:
label2:
label3:
2
Ahmed Ehab