Pergunta

Oscompareandswap (Mac OS X) é equivalente a cmpxchg8b?

Foi útil?

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
scroll top