Вопрос

Является ли OSCompareAndSwap (Mac OS X) эквивалентом CMPXCHG8B?

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top