我正在尝试找到一种方法来做类似bOR $a0, $a1, $a2 else
的事情,比如if(a=b||a=c){blablabla}else{blabla}
在 java 中,但我不知道在 mips32 中做这件事的方法。任何的想法?
问问题
56 次
3 回答
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 是一个条件分支,如果最后一次比较显示值相等,则跳转。基本上,您到处都在使用 goto。同样,这是伪代码,但您应该很容易找到 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 回答
0
假设你有a
in $a0
, b
in$a1
和c
in$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 回答