OSCompareAndSwap (Mac OS X) эквивалентен CMPXCHG8B? - PullRequest
3 голосов
/ 19 марта 2010

Соответствует ли OSCompareAndSwap (Mac OS X) CMPXCHG8B?

Ответы [ 2 ]

2 голосов
/ 19 марта 2010

Вы можете найти определение атомарных функций в файле OSAtomic.s в источнике XNU.Например, вот OSAtomicCompareAndSwapPtr для x86_64 в версии 1486.2.11:

_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
0 голосов
/ 19 марта 2010

замок CMPXCHG8B

точнее

Это для процессоров Intel, но учтите, что osx существует не только для архитектуры Intel, поэтому asm будет другим

...