首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能或分支mips32?

可能或分支mips32?
EN

Stack Overflow用户
提问于 2012-12-21 08:51:28
回答 3查看 54关注 0票数 0

我试图找到一种方法来做一些类似bOR $a0, $a1, $a2 else的事情,比如java中的if(a=b||a=c){blablabla}else{blabla},但是我想不出在mips32中做这件事的方法。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-21 09:33:04

假设您在$a0中有a,在$a1中有b,在$a2中有c,那么您应该这样做

代码语言:javascript
复制
  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:
票数 0
EN

Stack Overflow用户

发布于 2012-12-21 09:00:21

我已经很久没有做过任何组装了,但由于没有人回应,这是我记得的。我希望你接受这个答案,如果没有其他原因,我正在为你重新经历我最糟糕的噩梦。

要在汇编中执行任何类型的逻辑,都需要进行比较,然后是条件跳转。例如,一个if/else语句的形式:

代码语言:javascript
复制
if (a == b || a == c) {
    cond1
}
else {
    cond2
}
cond3

将被翻译如下(伪代码):

代码语言:javascript
复制
    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

票数 0
EN

Stack Overflow用户

发布于 2012-12-21 09:06:09

x86代码,但它应该给出一个想法。

代码语言:javascript
复制
    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:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13982820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档