1、汇编调用c函数:
汇编代码:
add_s.s
import add
area codeseg,code,readonly
entry
mov r0,#1
mov r1,#2
mov r2,#3
mov r3,#4
mov r4,#5
stmfd r13!,{r4} /*由于arm只有r0-r3是传参寄存器,在这里要传递5个参数,所以要用到栈,将r4入栈*/
bl add /*调用add.c*/
nop
nop
end
c函数代码:
add_c.c
extern int add(int x,int y,int z,int k,int m);
int add(int x,int y,int z,int k,int m)
{
return(x+y+z+k+m);
}
2、c函数调用汇编:
c函数代码:
main_c.c
#include <stdio.h>
extern int addfive(int,int,int,int,int,int);
int main(void)
{
int a=1,b=2,c=3,d=4,e=5,f=6;
printf("a=%d\n",addfive(a,b,c,d,e,f));
return 0;
}
汇编代码:
main_s.s
area codeseg,code,readonly
export add
add
mov r5,#0
add r5,r5,r0 /*将r0+r5放入r5,下同*/