https://blog.csdn.net/darennet/article/details/41128881
通常嵌入到 C 代码中的汇编语句很难做到与其它部分没有任何关系,因此更多时候需要用到完整的内联汇编格式:
__asm__("asm statements" : outputs : inputs : registers-modified);
下面是一个内联汇编的简单例子:
例4.内联汇编
/* inline.c */
int main()
{
int x = 10, y = 0;
printf("init:x=%d, y=%d\n", x, y);
__asm__ __volatile__("movl %1, %%eax;\n\r"
"movl %%eax, %0;"
:"=r"(y) /* 输出参数列表 */
:"r"(x) /* 输入 */
:"%eax"); /* 不受影响的寄存器 */
printf("now: x=%d, y=%d\n", x, y);
}
/*
上面的程序完成将变量x的值赋予变量y
*/
有几点需要说明:
变量
y
是输出操作数&#