int change_bit(int nr, void * addr)
{
int oldbit;
//1.第nr位取反, 原nr位入CF
//2. sbbl带借位减(把源操作数和标志位CF的值从目的操作数中一起减去)
// 即oldbit保留了结果为nr位上原值:0 or -1
__asm__ __volatile__(
"btcl %2,%1
sbbl %0,%0"
:"=r" (oldbit),"=m" (ADDR)
:"ir" (nr));
return oldbit;
}