美文网首页
CAS compareAndSwapInt汇编详解

CAS compareAndSwapInt汇编详解

作者: snail_knight | 来源:发表于2017-06-23 11:06 被阅读0次

    关于该乐观锁,相信有很多人研究过,而且网上一搜,都是到编绘那段代码戛然而止,

    http://www.tuicool.com/articles/v6fyIrr

    千篇一律都是这样,仿佛大家都是拷贝的,就是不说那段汇编到底做了些什么。

    从变量名称我们可以发现,汇编中从函数参数中传入了三个参数

    inline jintAtomic::cmpxchg    (jint    exchange_value,   volatile   jint*    dest,  jint    compare_value)

     {

    // alternative for InterlockedCompareExchange

    int mp =os::is_MP();  

    __asm {   

     mov edx, dest    资料暂存器

     mov ecx, exchange_value   计数暂存器

     mov eax, compare_value    积累暂存器

    LOCK_IF_MP(mp)   

     cmpxchg dword ptr [edx], ecx  

    }}

    为了读懂这段代码到底做了些什么什特意学了下汇编:

    第一步先判断是否是多核并行,

    如果是进行同步加锁 LOCK_IF_MP

    进入_asm{}

    mov  应该就是传送的意思

    edx是什么呢:

    http://blog.sina.com.cn/s/blog_59ca605c0100g3mx.html  

    http://www.cnblogs.com/qq78292959/archive/2012/07/20/2600865.html

    直接给出连接

    一般寄存器为AX,BX,CX,DX

    AX:积累暂存器。BX:基底暂存器,CX:计数暂存器,DX:资料暂存器

    EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元

    回到那段代码

    http://blog.csdn.net/reggergdsg/article/details/51835184

    相关文章

      网友评论

          本文标题:CAS compareAndSwapInt汇编详解

          本文链接:https://www.haomeiwen.com/subject/dobzqxtx.html