操作碼 |
指令 |
說明 |
0F C0 /r |
XADD r/m8, r8 |
交換 r8 與 r/m8;將和載入到 r/m8。 |
0F C1 /r |
XADD r/m16, r16 |
交換 r16 與 r/m16;將和載入到 r/m16。 |
0F C1 /r |
XADD r/m32, r32 |
交換 r32 與 r/m32;將和載入到 r/m32。 |
交換第一個運算元(目標運算元)與第二個運算元(源運算元),然後將這兩個值的和載入到目標運算元。目標運算元可以是暫存器或記憶體位置;源運算元是暫存器。
此指令可以配合 LOCK 字首使用。
早於 Intel486™ 處理器的“英特爾(R) 體系結構”處理器無法識別此指令。如果使用此指令,則應該提供在早期處理器上執行的等價程式碼序列。
TEMP SRC + DEST
SRC DEST
DEST TEMP
CF、PF、AF、SF、ZF 及 OF 標誌根據儲存到目標運算元的加法結果設定。
#GP(0) - 如果目標位於不可寫的段。如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS 或 GS 暫存器包含空的段選擇器。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果在目前特權級別為 3 且啟用對齊檢查的情況下進行未對齊的記憶體引用。
#GP - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS - 如果記憶體運算元有效地址超出 SS 段限制。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。