OSCompareAndSwap (Mac OS X) は CMPXCHG8B と同等ですか?
2 に答える
2
アトミック関数の定義は、XNU ソースの OSAtomic.s ファイルにあります。たとえば、バージョン 1486.2.11の x86_64の OSAtomicCompareAndSwapPtr は次のとおりです。
_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
于 2010-03-19T11:36:27.123 に答える
0
ロック cmpxchg8b
より正確に
これは intel プロセッサ用ですが、osx は intel アーキテクチャ用だけでなく存在することを考慮してください。したがって、asm は異なります。
于 2010-03-19T11:25:09.623 に答える