【发布时间】:2017-12-07 12:19:51
【问题描述】:
例如
extern int addfunction(int,int);
main() {
int a = 5, b = 6, z;
z = addfunction(a, b);
printf("%d", c);
}
addfunction() 在另一个 .s 文件中的定义,例如
.global addfunction
addfunction:
@ value a will be in R0 & R1 respectively
add r2, r0, r1 @ r2=r0+r1
现在如何返回存储的值r2,以便C程序中的变量z得到正确的值?我可以使用来自 C 的指针并更新 asm 中的地址。我不想这样。帮助!
【问题讨论】:
-
afaik 返回值在 r0 中,因此使用
add r0,r0,r1代替将完成这项工作(当然,您需要返回给调用者) -
@Tommylee2k .. 这也是参考中提到的。我试过了,但没有用。
-
它的工作.. 我原来的程序有逻辑错误。无论如何,这个问题也会对其他人有所帮助
-
您需要咨询calling convention。
标签: c function assembly arm return