CAS compareAndSwapInt汇编详解

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,720评论 8 114
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 12,531评论 1 10
  • 学习汇编前你应该知道的知识 收录的一篇很好的文章, 值得分享出来 , 找不到原著的链接了 1、汇编需要什么工具和程...
    西博尔阅读 9,165评论 6 20
  • 汇编基础教程 16位和32位的80x86汇编语言的区别 需要注意的是汇编不是一种语言,不同平台有不同的汇编语言对应...
    inwunwe阅读 13,146评论 2 19
  • 昨天路过南新华街,发现有一家器乐馆,里面人似乎在吹箫。以前学过几天箫,虽然一直没学好,老师的美妙箫音却留在了脑海里...
    金明啊阅读 1,463评论 0 0

友情链接更多精彩内容