小编jva*_*sch的帖子

MIPS bne beq 计算机组织与设计

所以,我会引用我的教科书(计算机组织与设计),然后我会问我的问题:

\n
\n
将 if-then-else 编译为条件分支
\n

在下面的代码段中,f, g, j, ij是变量。如果五个变量fthroughj对应于五个寄存器$s0through $s4,则此 C if 语句的编译 MIPS 代码是什么?

\n
if (i == j) f = g + h; else f = g - h;\n
Run Code Online (Sandbox Code Playgroud)\n

图 2.9 是 MIPS 代码应执行的操作的流程图。第一个表达式比较是否相等,因此如果寄存器是相等指令(beq),我们似乎需要分支。一般来说,如果我们测试相反的条件来分支执行 if 的后续 then 部分的代码(标签 Else 定义如下),那么代码会更高效,因此我们使用 if 寄存器不相等指令进行分支(bne):

\n
bne $s3, $s4, Else # go to Else if i \xe2\x89\xa0 j\n
Run Code Online (Sandbox Code Playgroud)\n
\n

我已经搜索了一段时间,但我找不到为什么bnebeq.
\n(不过,我确实发现有时建议使用 …

assembly if-statement mips micro-optimization conditional-statements

6
推荐指数
1
解决办法
7006
查看次数