例如
extern int addfunction(int,int);
main(){
int a=5,b=6,z;
z=addfunction(a,b);
printf("%d",c);
}
addfunction()defintion在另一个.s文件中,如
.global addfunction
addfunction:
@ value a will be in R0 & R1 respectively
add r2, r0, r1 @ r2=r0+r1
现在如何返回存储r2的值。这样c程序中的变量z就能得到正确的值。我可以用c&更新asm中的地址。我不想这样。救命!
答案 0 :(得分:0)
看here
标准的32位ARM调用约定将16个ARM寄存器分配为:
r0到r3:用于保存传递给子程序的参数值,并保存从子程序返回的结果。
因此将r0设置为返回值
.global addfunction
addfunction:
@ value a will be in R0 & R1 respectively
add r0, r0, r1 @ r0=r0+r1