所以,我会引用我的教科书(计算机组织与设计),然后我会问我的问题:
\n\n\n将 if-then-else 编译为条件分支
\n在下面的代码段中,
\nf, g, j, i和j是变量。如果五个变量fthroughj对应于五个寄存器$s0through$s4,则此 C if 语句的编译 MIPS 代码是什么?Run Code Online (Sandbox Code Playgroud)\nif (i == j) f = g + h; else f = g - h;\n图 2.9 是 MIPS 代码应执行的操作的流程图。第一个表达式比较是否相等,因此如果寄存器是相等指令(beq),我们似乎需要分支。一般来说,如果我们测试相反的条件来分支执行 if 的后续 then 部分的代码(标签 Else 定义如下),那么代码会更高效,因此我们使用 if 寄存器不相等指令进行分支(bne):
\nRun Code Online (Sandbox Code Playgroud)\nbne $s3, $s4, Else # go to Else if i \xe2\x89\xa0 j\n
我已经搜索了一段时间,但我找不到为什么bne比beq.
\n(不过,我确实发现有时建议使用 …
assembly if-statement mips micro-optimization conditional-statements