[英]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.