马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在C语言程序中,不需要使用任何关键字来声明将被汇编语言调用的C语言程序,但是在汇编语言程序调用该C语言程序之前,需要在汇编语言程序中使用IMPORT伪操作声明来声明该C语言程序。在汇编语言程序中通过BL指令来调用子程序。在示例中,汇编程序strcopy完成字符串赋值功能,C语言程序调用strcopy完成字符串的复制工作。 示例
汇编语言程序调用C语言程序 int g(int a,int b,intc,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访问凌阳教育官网
|