嵌入式系统实践实验报告--汇编和C 语言的相互调用.docx
《嵌入式系统实践实验报告--汇编和C 语言的相互调用.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实践实验报告--汇编和C 语言的相互调用.docx(9页珍藏版)》请在第壹文秘上搜索。
1、计算机科学技术系上机实践报告课程名称:嵌入式系统实践年级:上机实践成绩:指导教师:姓名:创新实践成绩:上机实践名称:汇编和C语言的相学号:上机实践日期:互调用上机实践编号:No.3组号:上机实践时间:V实验目的1. 阅读EmbCStEduKit-III启动代码,观察处理器启动过程;2. 学会使用EnlbeStIDE辅助信息窗口来分析判断调试过程和结果;3. 学会在EmbeStIDE环境中编写、编译与调试汇编和C语言相互调用的程序。二、实验设备1. 硬件:EmbestEDUKIT-111(实验平台)PC机2. 软件:EmbestIDEProARM集成开发环境,Windows98/2000/NT/
2、XP。三、实验内容使用汇编完成一个随机数产生函数,通过C语言调用该函数,产生一系列随机数,存放到数组里面。1 .C语言的编译过程C语言程序一汇编语言程序f目标可执行程序2 .汇编语言的函数调用过程参数准备函数返回汇编函数间调用3 .函数调用举例C语言调用汇编函数汇编语言调用C语言函数4 .命令脚本文件和链接脚本文件四、实验原理1. ARM过程调用ATPCS(ARM)ATPCS是一系列用于规定应用程序之间相互调用的基本规则,这此规则包括:支持数据栈限制检查;支持只读段位置无关(ROPI);支持可读/写段位置无关(RVVPI);支持ARM程序和ThUmb程序的混合使用;处理浮点运算。使用以上规定的
3、ATPCS规则时,应用程序必须遵守如下:程序编写遵守ATPCS;变量传递以中间寄存器和数据栈完成;汇编器使用-apes开关选项。关于其他ATPCS规则,用户可以参考ARM处理器相关书籍或登录ARM公司网站。程序只要遵守ATPCS相应规则,就可以使用不同的源代码编写程序。程序间的相互调用最主要的是解决参数传递问题。应用程序之间使用中间寄存器及数据栈来传递参数,其中,第一个到第四个参数使用R0R3,多于四个参数的使用数据栈进行传递。这样,接收参数的应用程序必须知道参数的个数。但是,在应用程序被调用时,一般无从知道所传递参数的个数。不同语言编写的应用程序在调用时可以自定义参数传递的约定,使用具有一定
4、意义的形式来传递,可以很好地解决参数个数的问题。常用的方法是把第一个或最后一个参数作为参数个数(包括个数本身)传递给应用程序。ATPCS中寄存器的对应关系如表35所列:表35ATPCS规则中寄存器列表ARM寄存器ATPCS别名ATPCS寄存器说明RO-R3al-a4参数/结果/scratch寄存器1-4R4vl局部变量寄存器1R5v2局部变量寄存器2R6v3局部变量寄存器3R7V4、wr局部变量寄存器4ThUmb状态工作寄存器R8v5ARM状态局部变量寄存器5R9V6、sbARM状态局部变显寄存器6RWPI的静态基址寄存器RlOV7、siARM状态局部变星寄存器7数据栈限制指针寄存器Rllv8
5、ARM状态局部变量寄存器8R12P子程序内部调用的临时(SCmtCh)寄存器R13sp数据栈指针寄存器R14Ir链接寄存器R15PC程序计数器2.main()函数与gccmain()当应用程序中包含了main。函数,将会引起对C运行时库的初始化。该初始化是通过函数gccmain()实现的,即在main。函数入口处,编译器会首先调用gccmain()函数,然后才是执行编写的代码。_gccmain()函数在gcc的标准库里面实现。当应用程序中没有包含main。函数,将不会引起对C运行时库的初始化。这时,C运行时库的很多功能在应用程序中是不能使用的。在基础实验的课程里面,我们没有涉及到函数库的内容,
6、因此,我们不打算在这里加入函数库的使用。因此,如果我们使用main函数作为应用程序的主函数,可以在源代码中加入一个空的.gccmain。函数(用C语言或者汇编语言均可)。图3-14 explasm工程文件设置界面五、实验步骤1 .考本章其他实验,创建新的工程,工程名为:explasm:2 .按照参考程序,重新编写源代码文件并分别保存为randtest.c,init.s,random.s和IdSCript,并把它们加入工程里面;3 .参照其他基础实验操作,按照编译一汇编器配置一链接器配置一调试器配置设置新工程,并编译、链接工程,如图3-14所示;4 .下载调试文件,打开memoryregiste
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式系统实践实验报告-汇编和C 语言的相互调用 嵌入式 系统 实践 实验 报告 汇编 语言 相互 调用