我聽說x86比較指令:cmp x, y
執行減法並根據結果設置各種標誌。使用XOR而不是減法的x86比較指令
現在,如果我只是想測試兩個操作數是否相等呢?創傷做XOR而不是減法要快得多?我的問題是,有沒有一個指令與XOR進行比較來判斷兩個操作數是否相等?也許它看起來像這樣:cmpeq x, y
或cmpxor x, y
。
我想如果我只是想測試平等,使用cmpxor
會比cmp
,減法。有沒有像cmpxor
這樣的指令可以讓我加速?
我也想說,我知道xor
將設置zero flag
。但如果我做xor x, y
,它會改變x
。我不想那樣。我想要一個比較指令,這將使操作數單獨存在。
你爲什麼認爲異或會「快得多」? – jalf 2013-05-07 13:29:28
它不會「快得多」,因爲'cmp'已經和其他指令一樣快(包括'xor')。在某些μarchs上,'cmp'指令甚至可以通過前端將相關的分支指令與一個單獨的μop進行融合,從而使其更快。這全部記錄在英特爾的優化手冊中,該手冊免費提供,值得一讀。 – 2013-05-07 13:49:29
Ira Baxter說得很好:*從技術上講,SUB應該比XOR花費更多的時間,因爲進位必須「漣漪」通過所有的位,而XOR是逐位平行的。*這是我的邏輯。 – Aaron 2013-05-07 14:51:52