Chinaunix

标题: 请教InterlockedExchange在64位下写法 [打印本页]

作者: zhongfangqing    时间: 2013-07-31 10:35
标题: 请教InterlockedExchange在64位下写法
因为long型在32位环境下是四字节,所以下面函数在32位下可以编过,但在64下long长度变化,编译出错。
报错提示“Incorrect register '%rax' used with 'l' suffix”
inline long InterlockedExchange(long* volatile Target, long Value)
{
    long ReturnValue;

    __asm __volatile(
    "lock xchgl %2,(%1)"
    : "=r" (ReturnValue)
    : "r" (Target), "0" (Value)
    : "memory");

    return ReturnValue;
}
请教该函数在64位下写法,谢谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2