OSCompareAndSwap(Mac OS X)是否等同于CMPXCHG8B?
答案 0 :(得分:2)
您可以在XNU源中的OSAtomic.s文件中找到原子函数的定义。例如,版本1486.2.11中的OSAtomicCompareAndSwapPtr for x86_64:
_OSCompareAndSwap64:
_OSCompareAndSwapPtr: #;oldValue, newValue, ptr
movq %rdi, %rax
lock
cmpxchgq %rsi, 0(%rdx) #; CAS (eax is an implicit operand)
sete %al #; did CAS succeed? (TZ=1)
movzbq %al, %rax #; clear out the high bytes
ret
答案 1 :(得分:0)
锁 CMPXCHG8B
更确切地说
它适用于英特尔处理器,但考虑到,osx不仅存在于英特尔架构中,因此asm会有所不同