c - C 中的 switch 语句会清空 x86 管道吗?

标签 c x86 switch-statement pipeline

在 C 中执行 switch 语句(假设它使用跳转表)是否会清空 x86 处理器的管道?我在想这可能是因为它需要查表的结果才能知道接下来要执行什么指令。它能否尽早将该结果转发回来,以免管道被完全清空?

最佳答案

跳转表不一定清空管道。间接分支是在现代处理器上预测的,分支预测器比您预期的要好。显然,正确预测的间接分支不会导致停顿。

根本不分支是可取的,但通常是不可能的(或引入如此多的开销以至于成为净损失)。用一系列条件分支替换跳转表有时是有益的,但前提是替换序列中的分支数量相当少。

关于c - C 中的 switch 语句会清空 x86 管道吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498543/

相关文章:

debugging - mov eax, 大 fs :30h

java - 大小写切换java编译错误

c - 声明在函数内部创建的全局结构

c - C 中的系统函数调用

c - 添加多维数组中每个元素的数字

memory - PAE(物理地址扩展)如何启用大于 4GB 的地址空间?

assembly - 英特尔内存模型是否会使SFENCE和LFENCE冗余?

c++ - 得到一堆十字架初始化错误

c# - 如何在 switch 语句中使用字符串资源

c - 为什么我的节点的 String 成员在创建后会打印一个空行?