班级:软件94班。
姓名:牛添识。
学号:09161072
实验一:c语言程序中调用汇编程序。
一、 实验目的。
通过实际的上机编程进一步熟悉与掌握在arm中实现c语言函数与汇编语言函数的相互调用,了解他们之间函数参数的传递方式。
二、 实验原理。
1、为了保证程序调用时参数的正确传递,汇编程序的设计要遵守atpcs。c中调用汇编文件的函数主要工作有以下两个;
2、在汇编程序中需要使用export 伪操作来导出函数名,并用该函数名作为汇编**段的标识,最后用mov pc,lr返回;
3、在c程序调用该汇编程序之前需要在c语言程序中声明函数原型,并用extern关键词来声明该汇编程序。
三、 实验过程。
1) 编写源文件。
打开realview mdk集成开发环境,新建工程,建立新的c语言文件和汇编语言文件,在文件中输入下面的源码:
c语言文件:
汇编语言文件:
2) 编译连接通过。
3) 观察c文件中的常量赋值。
可以从windows窗口看到常量地址及其值。
4)观察汇编中的参数传递。
前四个参数被赋给r0-r3四个寄存器,来进行参数的传递。
第5,6个参数存在数据站中进行传递,在内存位置为0x32008038处为第五个和第六个参数,此时可以从数据栈中读出。
5)观察结果的传递。
结果在r0中,为0x15,可以验证计算正确。
函数return得到的结果与返回的结果一致,调用成功。
实验二:汇编语言中调用c语言。
一、 实验目的。
通过实际的上机编程进一步熟悉与掌握在arm中实现c语言函数与汇编语言函数的相互调用,了解他们之间函数参数的传递方式。
二、 实验原理。
1、为了保证程序调用时参数的正确传递,汇编程序的设计要遵守atpcs。
2、在c程序中不需要使用任何关键字来声明将被汇编语言调用的c程序,但是在汇编程序调用该c程序之前需要在汇编语言程序中使用import伪操作来声明该c程序。在汇编程序中通过bl 指令来调用子程序。
三、 实验过程。
1)编写源文件。
在上一个实验的基础上,新建一个工程,建立新的汇编语言和c语言文件,并在该文件中输入以下的**。
汇编语言文件:
c语言文件:
2) 编译成功后,debug观察寄存器的使用情况。
r0-r3被赋值,并将0x5和0x6通过递减的方式压入数据栈,可以再内存中观察到数据已成功压栈。
3) 观察参数的传递。
4) 数据计算的结果保存在r0中做返回,可验证0x15为计算的正确结果。
四、 实验总结。
通过在汇编语言中调用c语言函数,加深了对arm混合编程的熟练程度,同时也通过实验中的问题,对工程中的配置文件有了进一步的了解。锻炼了解决问题的能力,为嵌入式系统软件开发的学习坚实了基础。
嵌入式系统实验报告
嵌入式系统实验报告内容。第一章 arm2410cl嵌入式系统基础实验。实验一arm2410cl嵌入式教学实验系统。实验报告要求 简述嵌入式linux开发的流程。实验二。嵌入式linux开发环境的配置。实验报告要求 1 简述嵌入式linux开发环境配置的具体步骤。2 简述网络文件系统 nfs 第二章 ...
嵌入式系统实验报告
本科实验报告。1.实验原理 本实验使用xmanager enterprise软件来连接老师配置好的linux服务器,以完成实验中使用linux完成编译和 运行一个嵌入式系统。实验中使用u boot作为系统的bootloader,使一个嵌入式linux系统完成编译并模拟在另一台机器上 并执行操作。u ...
嵌入式系统实验报告
姓名 班级 学号 实验一 流水灯。实验要求 编写一个程序,是开发板上的的3个led灯按流水灯方式闪烁。实验工具 超级终端开发板,电脑。实验程序如下 汇编指令实验 定义端口e寄存器预定义。rgpbcon equ 0x56000010 rgpbdat equ 0x56000014 rgpbup equ ...