对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
本文通过一个具体的示例介绍了如何使用GCC内嵌汇编来调用C语言函数。示例中展示了如何定义一个简单的HelloWorld函数,并通过内嵌汇编的方式调用该函数,详细解释了汇编指令及寄存器的使用。
1135

被折叠的 条评论
为什么被折叠?



