64位整数CMPXCHG例子

编程入门 行业动态 更新时间:2024-10-25 14:35:53
本文介绍了64位整数CMPXCHG例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我使用CMPXCHG(比较和交换)在i686的架构,32位比较和交换如下:

静态INT CAS(INT * PTR,诠释OLDVAL,诠释的newval){    unsigned char型RET;    __asm​​__ __volatile__(            锁\\ n            cmpxchgl%2%1 \\ n            SETE%0 \\ n            := Q(RET),= M(* PTR)            :R(的newval),M(* PTR),一(OLDVAL)            :内存);    //上述装配失败的情况下返回0    如果(RET)返回0;}

什么是相当于x86_64体系为64位的比较和交换

静态INT CAS(长* PTR,OLDVAL长,长的newval){    unsigned char型RET;    //?    如果(RET)返回0;}

解决方案

x86_64的有 cmpxchgq (Q为四字)指令为8字节(64位)比较和交换

I am using cmpxchg (compare-and-exchange) in i686 architecture for 32 bit compare and swap as follows.

static int CAS(int *ptr, int oldVal, int newVal) { unsigned char ret; __asm__ __volatile__ ( " lock\n" " cmpxchgl %2,%1\n" " sete %0\n" : "=q" (ret), "=m" (*ptr) : "r" (newVal), "m" (*ptr), "a" (oldVal) : "memory"); //above assembly returns 0 in case of failure if (ret) return 0; }

What is the equivalent for x86_64 architecture for 64 bit compare and swap

static int CAS(long *ptr, long oldVal, long newVal) { unsigned char ret; // ? if (ret) return 0; }

解决方案

x86_64 has the cmpxchgq ("q" for quadword) instruction for 8-byte (64 bit) compare and swap

更多推荐

64位整数CMPXCHG例子

本文发布于:2023-11-30 05:39:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1648910.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:整数   例子   CMPXCHG

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!