3

OSCompareAndSwap (Mac OS X) は CMPXCHG8B と同等ですか?

4

2 に答える 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 に答える