asm(
"mov $4, %%ebx\n"
"mov $1, %%eax\n"
"xchg %%ebx, %%eax\n"
"mov %%ebx, %0\n"
"mov %%eax, %1"
: : "g"(i), "g"(i)
);