SDM指令功能描述(XCHG)
XCHG指令,双操作数指令,用于交换src和dest操作数的内容。其中,src和dest可以是两个通用寄存器,也可以是一个寄存器和一个memory位置。在XCHG执行期间,memory操作数被引用时,处理器自动实现locking protocol,不依赖LOCK prefix或IOPL字段(I/O privilege level field,EFR寄存器中的IOPL字段)的值。(参考locking protocol机制中的LOCK prefix描述)。
XCHG指令通常用来实现OS中与同步相关的semaphores功能 (参考chapter 8中“Bus Locking”内容)
XCHG指令可以用来在16位操作中代替BSWAP指令。
注意:
XCHG (E)AX, (E)AX(编码90H)等同于NOP,不依赖包括REX.W的prefixes。
伪代码:
xchg DEST, SRC
temp = DEST;
DEST = SRC;
SRC = temp;