OSCompareAndSwap (Mac OS X) 是否等同于 CMPXCHG8B?
问问题
639 次
2 回答
2
您可以在 XNU 源代码的 OSAtomic.s 文件中找到原子函数的定义。例如,这是版本 1486.2.11中 x86_64的 OSAtomicCompareAndSwapPtr:
_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
于 2010-03-19T11:36:27.123 回答
0
锁定 cmpxchg8b
更确切地说
它适用于 intel 处理器,但要考虑到,osx 不仅适用于 intel 架构,因此 asm 会有所不同
于 2010-03-19T11:25:09.623 回答