IA-32 Assembly Language Reference Manual
cmpxchgCompare and Exchange (cmpxchg)[486]
cmpxchg{bwl} reg[8|16|32], r/m[8|16|32]
Example
cmpxchgb %cl, 1(%esi)
cmpxchgl %edx, 4(%edi)
https://docs.oracle.com/cd/E19455-01/806-3773/6jct9o0b0/index.html
cmpxchg
CMPXCHG SOURCE, DESTINATION
mov如果destination和EAX/AX/AL相等,把source加载到destination;
否则,把destination加载到EAX/AX/AL中
mov{bwl} imm[8|16|32], r/m[8|16|32]
mov{bwl} reg[8|16|32], r/m[8|16|32]
mov{bwl} r/m[8|16|32], reg[8|16|32]
Operation
SRC -> DEST
movl %cr3, %ebp
movl %db7, %ebp
movl %ebp, %cr3
movl %ebp, %db7
movl %tr7, %ebp
movl %ebp, %tr7
https://docs.oracle.com/cd/E19455-01/806-3773/6jct9o0b6/index.html