macos - OSCompareAndSwap (Mac OS X) 是否等同于 CMPXCHG8B?

标签 macos assembly kernel compare-and-swap atomic-swap

OSCompareAndSwap (Mac OS X) 是否等同于 CMPXCHG8B?

最佳答案

您可以在 XNU 源代码的 OSAtomic.s 文件中找到原子函数的定义。例如,这里是 OSAtomicCompareAndSwapPtr for x86_64在版本 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

关于macos - OSCompareAndSwap (Mac OS X) 是否等同于 CMPXCHG8B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476654/

相关文章:

assembly - 当未对齐的写入跨越页面边界并触发故障时会发生什么?

assembly - x86 组装 GAS 中的划分

assembly - 如何将程序集转换为二进制文件?

python - 在 Canopy 中同时运行脚本

mysql - MySQL 作业警报

objective-c - 如何在 Snow Leopard 中编写 Finder 插件

linux - 用户地址内存是如何组织的?

c - 读取磁盘中的 block (内核编程)

ruby - 在 Mac OSX 10.8.2 上安装 Jekyll 时出错

cocoa - 将 Apple 的型号标识符 (MacBookPro5,1) 转换为用户友好的名称?