凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

嵌入式C语言程序设计技巧-----参数传递

已有 582 次阅读| 2016-3-3 15:00

为了使用单独编译的C语言程序和汇编程序能够互相调用,定义了统一的函数过程调用标准ATPCSATPCS定义了寄存器组中的{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的定义,函数参数从左到右由寄存器进行传递,所以在汇编中直接由R0R1进行引用。这样,在C语言和汇编语言之间进行调用就容易实现了。

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 06:34 , Processed in 0.015262 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部