对gcc内嵌汇编的探索与实验(2)
汇编调用函数的例子....AT&T ASM的操作数与被操作数与Intel格式刚好位置相反的,呵呵
下面是一个Hello World
#include <stdio.h>
#include <stdlib.h>
void t(char *a)
{
printf("%s/n",a);
}
int main(int argc, char *argv[])
{
char buff[13] = "Hello world!";
void ( *lpF)(char *) = t;
__asm__ __volatile__ //不要编译器进行优化
( : //out,这个冒号的一段是输出用的
:"r"(lpF) ,"r"(buff) //in,输入用的
:"memory","eax"
);
system("PAUSE");
return 0;
}
"push %%eax;"
"push %1;" //参数入栈
"call *%0;" //调用函数
"pop %%eax;"
如:push $12