正文
#include<stdio.h>
#include<string.h>
/*
函数名:att_asm_p();
功能:类似于
movesp,[ebx]
返回值:无
传入值:无
*/
voidatt_asm_p(void)
{
intb=11;
intd=599;
int*p=&d;
asm("movl%0,%%ecx\n\t"::"r"(p));
asm("movl(%ecx),%eax\n\t");
asm("movl%%eax,%0\n\t":"=r"(b));
printf("b:%d\n",b);
}
/*
函数名:att_asm_mov();
功能
说明
"movl%2,%%edi\n\t"//%2
"movl%%edi,%0\n\t"//%0
:"=a"(__out)
:"r"(__in1),"r"(__in2));
返回值:无
传入值:无
*/
voidatt_asm_mov()
{
int__out=1,__in1=2,__in2=3;
__asm__(
"movl%1,%%esi\n\t"
"movl%2,%%edi\n\t"
"movl%%edi,%0\n\t"
:"=a"(__out)
:"r"(__in1),"r"(__in2));
printf("cr0:%d\n",__out);
}
intmain(intargc,char*argv[])
{
att_asm_p();
att_asm_mov();
return0;
}