首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

_asm_ _volatile_ 编译报错,该如何解决

2012-04-25 
__asm__ __volatile__ 编译报错//function: set *pv to nv//return: the initial value of *pv/// 原子地

__asm__ __volatile__ 编译报错
//function: set *pv to nv
  //return: the initial value of *pv
  /// 原子地把nv赋值给pv指向的整数,支持8位,16位,32位,84位操作
  /// @param pv 待赋值的整数(目的操作数)
  /// @param nv 向pv赋的整数
  /// @return pv指向的赋值前的数值
  __inline__ uint64_t atomic_exchange(volatile uint64_t * pv, const uint64_t nv)
  {
  register unsigned long __res;
  __asm__ __volatile__ (
  "1:"
  LOCK_PREFIX "cmpxchgq %3,(%1);" \
  "jne 1b": 
  "=a" (__res), "=q" (pv): "1" (pv), "q" (nv), "0" (*pv));
  return __res;
  }
上面是软件中的代码,编译报错,
./../src/common/atomic.h: In function ‘uint64_t tfs::common::atomic_exchange(volatile uint64_t*, uint64_t)’:
../../src/common/atomic.h:211: error: impossible register constraint in ‘asm’
make[2]: *** [client_request_server.o] Error 1
make[2]: Leaving directory `/home/liliming/lib/tfs/src/names

哪位大侠指点一下,是哪出了错
 

[解决办法]
这是啥环境?

热点排行
Bad Request.