本文简介介绍一个在gcc中写asm的例子..
#include
int main()
{
int a=10,b=0;
printf("0) a: %d b: %d\n",a,b);
// b = a
asm ( "movl %1, %%eax;\
movl %%eax, %0;"
: "=r"(b) // output
: "r"(a) // input
:"%eax" // clobbered register
);
printf("1) a: %d b: %d\n",a,b);
// b = a * 5
asm( "leal (%1,%1,4), %0"
: "=r" (b)
: "r" (a)
);
printf("2) a: %d b: %d\n",a,b);
return 0;
}
Output
$ ./a.out 0) a: 10 b: 0 1) a: 10 b: 10 2) a: 10 b: 50
References
[1] http://argcv.com/archives/84 GCC汇编器语法