Oscompareandswap (Mac OS X) é equivalente a cmpxchg8b?
-
21-09-2019 - |
Pergunta
Oscompareandswap (Mac OS X) é equivalente a cmpxchg8b?
Solução
Você pode encontrar a definição das funções atômicas no arquivo Osatomic.s na fonte XNU. Por exemplo, aqui está OsatomicComparandswapptr para x86_64 Na versão 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
Outras dicas
LOCK CMPXCHG8B
mais exatamente
É para processadores Intel, mas leve em consideração que o OSX existe não apenas para a arquitetura da Intel, então o ASM será diferente
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow