Assembly 可能还是分支mips32?

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 ||

我正试图找到一种方法在java中实现类似于
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: