Является ли OSCompareAndSwap (Mac OS X) эквивалентом CMPXCHG8B?
-
21-09-2019 - |
Вопрос
Является ли 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 будет другой.
Не связан с StackOverflow