天天看点

C中使用汇编交换两个值

使用宏定义虽然也可以,总是觉得不方便。吾一直想,最好提供一个交换指令,然后直接定义一个函数供调用。

以下代码没有经过测试,请自行验证。

  • WINDOWS
int x=1, y=200;
 
_asm
{
    push x;
    push y;
    pop  x;
    pop  y;
}
 
printf("x=%d, y=%d\n", x, y);      
  • LINUX
int x=1, y=200;
asm(
    "push x\n\t"
    "push y\n\t"
    "pop  x\n\t"
    "pop  y\n\t"
);
printf("x=%d, y=%d\n", x, y);      

继续阅读