asm volatile函数的输出为提供的代码

时间:2013-07-31 09:30:40

标签: c++ assembly

有人可以解释下面这个函数是做什么的:

 inline int atomic_exchange_and_add( int * pw, int dv )
{
 int r;
  __asm__ __volatile__
 (
    "lock\n\t"
    "xadd %1, %0":
    "=m"( *pw ), "=r"( r ): // outputs (%0, %1)
    "m"( *pw ), "1"( dv ): // inputs (%2, %3 == %1)
    "memory", "cc" // clobbers
 );
}

以下是电话:

void weak_release() // nothrow
{
    if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
    {
        destroy();
    }
}

提前致谢

0 个答案:

没有答案