私はJava のbOR $a0, $a1, $a2 else
ような何かを行う方法を見つけようとしif(a=b||a=c){blablabla}else{blabla}
ていますが、mips32 でそれを行う方法がわかりません。何か案が?
3 に答える
0
a
あなたがに$a0
、b
で$a1
、そしてあなたがするだろうと仮定c
します$a2
beq $a0, $a1, if
beq $a0, $a2, if
bgez $zero, else
if:
.. code if a=b or a=c
bgez $zero, endif
else:
.. code otherwise
endif:
于 2012-12-21T01:33:03.537 に答える
0
組み立てを行ってから何年も経ちましたが、誰も応答しなかったので、覚えていることを次に示します。この回答を受け入れていただければ幸いです。他の理由がなければ、最悪の悪夢を再現していることになります。
アセンブリであらゆる種類のロジックを実行するには、比較を行い、その後に条件付きジャンプを行う必要があります。たとえば、次の形式の if/else ステートメントは次のようになります。
if (a == b || a == c) {
cond1
}
else {
cond2
}
cond3
次のように変換されます (疑似コード):
cmp a,b
je cond1
cmp a,c
je cond1
...
cond2:
...
jmp cond3
cond1:
...
cond3:
...
Cmp は値を比較し、je は最後の比較で値が等しいことが示された場合にジャンプする条件分岐です。基本的に、どこでも gotos を使用しています。繰り返しますが、これは疑似コードですが、MIPS の類似物を簡単に見つけることができます。
そういえば、これを見つけました: http://jjc.hydrus.net/cs61c/handouts/loops4.pdf
于 2012-12-21T01:00:20.547 に答える
0
x86コードですが、アイデアが得られるはずです。
cmp eax, ebx
je blablabla
cmp eax, ecx
jne blabla
blablabla: ; if a == b || a == c
;do your blablabla sutff here
jmp Continue
blabla: ; else
;do your blabla sutff here
Continue:
于 2012-12-21T01:06:09.117 に答える