#include int main(){ register int x = 40; int y = 92; printf("x = %d, y = %d\n", x, y); /* asm("add %ebx, %ebx"); */ // Works, kind of /* asm("mov %0, %1; add %1, %1; mov $27, %0 " : "=r"(x),"=r"(y) : "r"(x) ); */ /* Evidence suggests you shouldn't re-order x and y */ asm("mov %%eax, %%ebx; add %%ebx, %%ebx; mov $27, %%eax" : "=a"(x), "=b"(y) : "a"(x), "b"(y) ); printf("x = %d, y = %d\n", x, y); return 0; }