天天看點

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);      

繼續閱讀