#include <iostream>
void swap1(int *a, int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
void swap2(int *a, int *b)
{
__asm__ volatile (".intel_syntax noprefix\n\t\
xor rax,rcx\n\t\
xor rcx,rax\n\t\
xor rax,rcx" : "=a" (*a), "=c" (*b) : "a" (*a), "c" (*b) : "memory");
}
void swap3(int *a, int *b)
{
__asm__ volatile ("" : "=a" (*a), "=c" (*b) : "c" (*a), "a" (*b) : "memory");
}
int main()
{
int a=6,b=7,c=8;
std::cout<<a<<b<<c<<"\n";
swap1(&a,&a);
swap2(&b,&b);
swap3(&c,&c);
std::cout<<a<<b<<c<<"\n";
swap1(&a,&b);
swap2(&b,&c);
swap3(&a,&b);
std::cout<<a<<b<<c<<"\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBzd2FwMShpbnQgKmEsIGludCAqYikKewogICAgKmEgXj0gKmI7CiAgICAqYiBePSAqYTsKICAgICphIF49ICpiOwp9Cgp2b2lkIHN3YXAyKGludCAqYSwgaW50ICpiKQp7CiAgICBfX2FzbV9fIHZvbGF0aWxlICgiLmludGVsX3N5bnRheCBub3ByZWZpeFxuXHRcCiAgICB4b3IgcmF4LHJjeFxuXHRcCiAgICB4b3IgcmN4LHJheFxuXHRcCiAgICB4b3IgcmF4LHJjeCIgIDogIj1hIiAoKmEpLCAiPWMiICgqYikgOiAiYSIgKCphKSwgImMiICgqYikgIDogIm1lbW9yeSIpOyAgCn0KCnZvaWQgc3dhcDMoaW50ICphLCBpbnQgKmIpCnsKICAgIF9fYXNtX18gdm9sYXRpbGUgKCIiICA6ICI9YSIgKCphKSwgIj1jIiAoKmIpIDogImMiICgqYSksICJhIiAoKmIpICA6ICJtZW1vcnkiKTsgIAp9CgppbnQgbWFpbigpCnsKICAgIGludCBhPTYsYj03LGM9ODsKICAgIHN0ZDo6Y291dDw8YTw8Yjw8Yzw8IlxuIjsKICAgIHN3YXAxKCZhLCZhKTsKICAgIHN3YXAyKCZiLCZiKTsKICAgIHN3YXAzKCZjLCZjKTsKICAgIHN0ZDo6Y291dDw8YTw8Yjw8Yzw8IlxuIjsKICAgIHN3YXAxKCZhLCZiKTsKICAgIHN3YXAyKCZiLCZjKTsKICAgIHN3YXAzKCZhLCZiKTsKICAgIHN0ZDo6Y291dDw8YTw8Yjw8Yzw8IlxuIjsKICAgIHJldHVybiAwOwp9