/*
* An example of incorrectly using the changed registers list
*
* 改动的寄存器列表
*/
#include
#if 0
int main_error()
{
int data1 = 10;
int result = 20;
__asm("addl %1, %0\n\t"
:"=d"(result)
:"c"(data1), "0"(result) /* 0 is zero */
: "%ecx", "%edx");
printf("The result is %d\n", result);
return 0;
}
#endif
/* 修改后 */
int main()
{
int data1 = 10;
int result = 20;
__asm("movl $1, %%eax\n\t"
"addl %%eax, %0\n\t"
:"=r"(result)
:"r"(data1), "0"(result) /* 0 is zero */
: "%eax");
printf("The result is %d\n", result);
return 0;
}