3

OSCompareAndSwap (Mac OS X) 是否等同于 CMPXCHG8B?

4

2 回答 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 回答