相关疑难解决方法(0)

为什么条件移动不易受分支预测失败的影响?

在阅读了这篇文章后(在StackOverflow上回答)(在优化部分),我想知道为什么条件移动不容易受到分支预测失败的影响.我在一篇关于cond移动的文章中找到了(PDF由AMD提供).在那里,他们声称cond的性能优势.移动.但为什么会这样呢?我没有看到它.在评估ASM指令的时刻,前面的CMP指令的结果尚未知晓.

谢谢.

optimization performance assembly cpu-architecture branch-prediction

72
推荐指数
4
解决办法
1万
查看次数

为什么 x86 只有 1 种形式的条件移动,而不是立即或 8 位?

我注意到条件移动指令的可扩展性比普通的mov. 例如,它不支持立即数,也不支持寄存器的低字节。

出于好奇,为什么该Cmov命令比一般mov命令的限制性要大得多?例如,为什么两者不允许这样的事情:

mov    $2, %rbx    # allowed
cmovcc $1, %rbx    # I suppose setcc %bl could be used for the '1' immediate case
Run Code Online (Sandbox Code Playgroud)

附带说明一下,我注意到在使用 Compiler Explorer 时, 的使用量比和cmovcc少得多。通常是这种情况吗?如果是,为什么它的使用频率低于其他条件句?jmpccsetcc

x86 assembly cpu-architecture instructions conditional-move

5
推荐指数
1
解决办法
2024
查看次数