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

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

日志

汇编语言程序调用C语言程序

已有 473 次阅读| 2016-3-10 14:35

为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在C语言程序中,不需要使用任何关键字来声明将被汇编语言调用的C语言程序,但是在汇编语言程序调用该C语言程序之前,需要在汇编语言程序中使用IMPORT伪操作声明来声明该C语言程序。在汇编语言程序中通过BL指令来调用子程序。在示例中,汇编程序strcopy完成字符串赋值功能,C语言程序调用strcopy完成字符串的复制工作。

示例    汇编语言程序调用C语言程序

int g(int a,int b,int c,int d,int e)

{

return a+b+c+d+e;

}

汇编语言程序调用C语言程序g()计算5个整数i,2xi,3xi,4xi,5xi的和。

汇编语言源程序:

EXPORT f

AREA f,CODE,READONLY

IMPORT g                ;R0

STR     LR,[SP,#-4]!    ;预先保存LR

ADD     R1,R0,R0        ;计算2xi(第2个参数)

ADD     R2,R1,R0        ;计算3xi(第3个参数)

ADD     R1,R0,R0        ;计算5xi(第5个参数)

STR     R3,[SP,#-4]!    ;5个参数压入堆栈

ADD     R3,R1,R1        ;计算4xi(第4个参数)

BL   g                  ;调用C语言程序g()

ADD     SP,SP,#4        ;调整数数据栈指针,准备返回

LDR     PC,[SP],#4      ;从子程序返回

END

Linux内核分析

Linux的源代码具有开放性,其内核灰机了无数编程人员优秀的编程思想,吸引着一批批的开发者去研究它。深刻领悟Linux内核的编程思想,将是学习嵌入式Linux系统编程的基础。只有构造出更加精简、高效的嵌入式Linux内核,才可编写出更高质量的驱动程序与应用程序。

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


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

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

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

GMT+8, 2024-4-25 11:44 , Processed in 0.013933 second(s), 6 queries , Gzip On, Redis On.

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