[英]assembly - x86_64 - predicates
我正在为x86_64和arm编写一些程序集。
我想知道x86_64是否具有定义分支谓词的某些方法。
我搜索了英特尔文档,但找不到相关信息。
我们有cmov
但是它相当慢,而cmp jmp
组合往往会更快。
ARM谓词是分支的替代方法 。 IDK“分支谓词”的含义。 也许您是说“谓词条件”?
与仅跳过一条或两条指令(如果根本无法预测)的分支相比, cmov
通常是值得的。 Broadwell和Skylake将cmov作为单个uop运行,但是以前的微体系结构需要2 uops,因为它具有3个输入依赖项。 它还创建数据依赖关系而不是控制依赖关系。 分支预测在可行时可能会更好。 同样, cmov
无法采用立即操作数,这在许多情况下令人沮丧。
另一个可以使用条件作为输入的指令是setcc
。 使用xor reg,reg
/ set标志/ setcc low-byte-of-reg
,以避免在读取完整寄存器时出现部分reg停顿的情况。
对于进位条件, sbb same,same
会产生0或-1(用作AND掩码),或adc reg, 0
会产生reg += CF
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.