gpt4 book ai didi

c - C 中的 IF 条件转换为 MIPS

转载 作者:太空狗 更新时间:2023-10-29 15:54:24 24 4
gpt4 key购买 nike

我想知道为什么if(x == y)在C语言中翻译成'bne' 条件而不是 MIPS 中的 'beq' 条件?

最佳答案

暂时忽略条件,考虑这些代码块可能在汇编语言指令流中打印的顺序:

// A
if (x == y) {
// B
}
// C
  • x == y 为真时,流程按顺序从 A 到 B 再到 C。相等时不需要跳转 (beq),因为所需的流程与 block 在指令流中的打印方式相匹配。

  • x == y 为 false 时,在 A 的末尾,流程必须绕过 B 并直接跳转到 C。这就是分支指令被触发的原因不等式(bne)。


当然,仅将这些作为此特定案例的思考过程的示例。

在一般情况下,这些都是实现细节。编译器可以以任何它认为合适的方式打印指令,包括反转条件。 (请记住,由于现代 CPU 流水线,编译器成功猜测最可能的执行路径并确保它包含尽可能少的跳转通常是一个强大的优化目标。)

关于c - C 中的 IF 条件转换为 MIPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34825648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com