È OSCompareAndSwap (Mac OS X) equivalente a CMPXCHG8B?
-
21-09-2019 - |
Domanda
È OSCompareAndSwap (Mac OS X) equivalente a CMPXCHG8B?
Soluzione
È possibile trovare la definizione delle funzioni atomiche nel file OSAtomic.s nella fonte XNU. Ad esempio, ecco OSAtomicCompareAndSwapPtr per x86_64 nella versione 1486/02/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
Altri suggerimenti
Blocco CMPXCHG8B
, più esattamente
E 'per processori Intel, ma prendere in considerazione, esiste che osx non solo per l'architettura Intel, così ASM sarà diverso
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow