Est-OSCompareAndSwap (Mac OS X) équivalent à CMPXCHG8B?
-
21-09-2019 - |
Question
est OSCompareAndSwap (Mac OS X) équivalent à CMPXCHG8B?
La solution
Vous trouverez la définition des fonctions atomiques dans le fichier OSAtomic.s dans la source XNU. Par exemple, voici OSAtomicCompareAndSwapPtr pour x86_64 dans la version 11/02/1486:
_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
Autres conseils
verrouillage CMPXCHG8B
plus exactement
Il est pour les processeurs Intel, mais prendre en compte, que osx existe non seulement pour l'architecture intel, donc asm sera différent
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow