EDA365电子工程师网

标题: 嵌入式C语言程序设计技巧-----参数传递 [打印本页]

作者: Abricy    时间: 2016-6-4 15:02
标题: 嵌入式C语言程序设计技巧-----参数传递
为了使用单独编译的C语言程序和汇编程序能够互相调用,定义了统一的函数过程调用标准ATPCS。ATPCS定义了寄存器组中的{R0~R3}作为参数传递和结果返回寄存器。如果参数数目超过4个,则使用堆栈进行传递。由于内部寄存器的访问速度远远大于存储器,所以要尽量使参数传递在寄存器里面进行,即应尽量把函数的参数控制在4个以下。
示例 汇编函数调用的参数传递。
从C语言中直接调用汇编语言函数
extern void strcopy(char *d,const char *s);
int main(void){
const       char src="Source";
char dest[10];
...
strcopy(dest,src);
...
}
AREA     StrCopy,CODE,READONLY
EXPORT strcopy
strcopy
LDRB     R2,[R1],#1
STRB      R2,[R0],#1
CMP              R2,#0
BNE              strcopy
MOV             PC,LR
END
这个例子中的函数strcopy用汇编来实现,根据ATPCS的定义,函数参数从左到右由寄存器进行传递,所以在汇编中直接由R0和R1进行引用。这样,在C语言和汇编语言之间进行调用就容易实现了。
作者: helendcany    时间: 2016-6-7 17:43
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈~谢谢

作者: yhg-lee    时间: 2016-7-26 09:16
资源多,学习不止步,共同进步

作者: 10929390    时间: 2016-8-1 15:46
楼主辛苦了!

作者: xuzwg    时间: 2016-8-3 14:11
支持楼主!谢谢分享!





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2