我想知道如何用 C、C++ 或汇编语言为 x64 处理器编写高效的跳转表。输入是预先知道的,但无法通过算法进行预测。假设我可以在输入流中尽可能地向前看,有什么方法可以动态地告诉 CPU 下一个分支要去哪个地址?
本质上,我想以编程方式更新分支目标缓冲区。但是,如果程序员通过查看数据提前知道下一个分支的去向,但处理器无法从过去的模式中确定这一点,我会接受任何允许我避免刷新管道的方法。
意识到这是一个非常具体的问题,我可能无法正确传达它,这里有一些替代措辞:
Cell 处理器上是否有与hbr
Hint for Branch 等效的 x64?
它是否有助于在cmp
条件分支之前移动程序集,就像在 Itanium 中所做的那样?
间接跳转的预测目标是否基于寄存器值而不是最后使用的地址?
谢谢!