gpt4 book ai didi

x86 - "ret"是否使管道停止?

转载 作者:行者123 更新时间:2023-12-04 21:46:52 24 4
gpt4 key购买 nike

由于 ret 指令是一个间接调用,x86 上的 ret 指令会停止流水线,还是以某种方式优化为更直接的调用?

最佳答案

根据英特尔优化引用手册,分支预测单元包含一个 Return Stack Buffer,可以更准确地预测 ret 指令(第 2.2.2.1 节)。指令排队和解码单元还跟踪堆栈指针的变化以提高解码带宽(第 2.2.2.5 节)。

更详细地,第 3.4.1.4 节描述了一些“规则”,主要针对编译器编写者,以从内联、调用和返回中获益——最相关的可能是 near/far 调用必须与 near/far return,不推荐将返回地址压入栈,跳转到被调用者。此外,建议调用深度不超过 16 个嵌套调用(RSB 的大小)。

如果遵循这些规则,您可以在分支选择(第 3.4.1.6 节)期间有效地将它们视为间接分支,并包含所有暗示的内容。您很可能永远不会在 ret 上遇到停顿,除非出现异常情况或自修改代码。

关于x86 - "ret"是否使管道停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232035/

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