OSCompareAndSwap (Mac OS X) эквивалентен CMPXCHG8B?

OSCompareAndSwap (Mac OS X) эквивалентен CMPXCHG8B?

2 ответа

Решение

Вы можете найти определение атомарных функций в файле 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

Блокировка cmpxchg8b

точнее

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

Другие вопросы по тегам