0

おそらく簡単な修正ですが、Mips をよりよく理解しようとしており、しばらくこの問題に悩まされています。

n が要件を満たしている場合 (1<= n <= 30) に分岐する方法を見つけようとしています。

1未満のものにblezを使用できることは理解していますが、同時に26より大きいかどうかを確認するにはどうすればよいですか?

slt を使用できると思っていましたが、実装方法がわかりません。

このリンクを見て、sltが役立つかどうかを確認してください。

私がやろうとしていることを要約するだけです:

$t0 = n
$t1 = 1
$t2 = 30

 if ($t1 <= $t0 <= $t2) { go to 1stloop }
 else ( go to 2ndloop)
4

2 に答える 2

0

を使用したい場合はslt、これで問題なく動作します。

    li    $t0, n
    li    $t1, 1
    li    $t2, 30

    slt   $s0, $t0, $t1     #$s0 = ($t0 < $t1) ? 1 : 0
    beq   $s0, 1, _2ndloop
    slt   $s0, $t2, $t0
    beq   $s0, 1, _2ndloop

_1stloop:
    # do something

_2ndloop:
    # do something

より良い解決策は and を使用することでbltありbgt、ここにスニペストがあります:

    blt   $t0, $t1, _2ndloop     # branch to _2ndloop if($t0 < $t1)
    blt   $t2, $t0, _2ndloop
_1stloop:
    # do something

_2ndloop:
    # do something
于 2016-02-05T01:19:59.720 に答える