Assembly 可能还是分支mips32?
我正试图找到一种方法在java中实现类似于Assembly 可能还是分支mips32?,assembly,mips32,Assembly,Mips32,我正试图找到一种方法在java中实现类似于bOR$a0,$a1,$a2 else,类似于if(a=b | | a=c){blablablabla}else{blablablabla},但我没有找到在mips32中实现的方法。有什么想法吗?我已经很久没有做任何集会了,但因为没有人回应,我记得的是。我希望你接受这个答案,如果没有其他原因的话,那就是我正在为你做最糟糕的噩梦 要在汇编中执行任何类型的逻辑,都需要进行比较,然后进行条件跳转。例如,形式为的if/else语句: if (a == b ||
bOR$a0,$a1,$a2 else
,类似于if(a=b | | a=c){blablablabla}else{blablablabla}
,但我没有找到在mips32中实现的方法。有什么想法吗?我已经很久没有做任何集会了,但因为没有人回应,我记得的是。我希望你接受这个答案,如果没有其他原因的话,那就是我正在为你做最糟糕的噩梦
要在汇编中执行任何类型的逻辑,都需要进行比较,然后进行条件跳转。例如,形式为的if/else语句:
if (a == b || a == c) {
cond1
}
else {
cond2
}
cond3
将翻译为以下内容(伪代码):
Cmp比较值,而je是一个条件分支,如果最后一次比较显示值相等,它将跳转。基本上,你到处都在使用gotos。同样,这是伪代码,但是您应该很容易找到MIPS类似物
说到这里,我发现:
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:
假设您在
$a0
中有a
,b
在$a1
中有a
,c
在$a2
中有a
,那么您可以这样做
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:
嗯,但我遇到的问题实际上是在比较中,因为如果你只能在mips中添加两个要比较的参数,因为只有二进制答案,我可以去掉b和c之外的间隔,但是如果我说当你可以用c编写代码时它是无效的(例如),那么编译并反汇编它。
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: