当前位置: 首页>移动开发>正文

汇编转换成swift 汇编转化为c语言

第3次实验 汇编和C语言的相互调用10082130204 潘云

3汇编和C语言的相互调用(实验报告)

第 PAGE \* Arabic \* MERGEFORMAT 9 页第 PAGE \* Arabic \* MERGEFORMAT 9 页

华东师范大学计算机科学技术系上机实践报告

课程名称:嵌入式系统实践

年级:08级

上机实践成绩:

指导教师:金健

姓名:潘云

创新实践成绩:

上机实践名称:汇编和C语言的相

互调用

学号:10082130204

上机实践日期:2011/3/18

上机实践编号:No.3

组号:2

上机实践时间:2学时

实验目的

阅读Embest EduKit-III启动代码,观察处理器启动过程;

学会使用Embest IDE辅助信息窗口来分析判断调试过程和结果;

学会在Embest IDE环境中编写、编译与调试汇编和C语言相互调用的程序。

实验设备

硬件:PC机

软件:Embest IDE Pro ARM集成开发环境,Windows 7/XP

实验内容

编写一个汇编程序mixop.s

– 实现函数 y=mixop(x1,x2,x3)

– y=x1+x2+x3

– 调用c2.c中的multiply函数

? C程序1:c1.c

– 实现函数void init();

– 作为启动时的起始地址

– 在该函数内要调用mixop函数完成6+40*50,结果存放在变量y中。

? C程序2:c2.c

– 实现函数 y=multiply(x1,x2)

– y=x1*x2

? 提示:init()函数结尾时,设置死循环

实验原理

C和汇编语言混合编程

? C语言程序→汇编语言程序→目标可执行程序

C程序先要转化为汇编程序,意味着C和汇编语言混合编程时,最终可以从汇编语言之间的相互调用过程着眼

参数个数≤4时 - 输入参数

? 在函数体内使用参数(4个参数见下表)

参数个数≤4时 - 返回值

? 函数结束时,应将返回值存放到r0中

汇编语言调用函数(参数个数≤4)

? 如何准备函数参数

– 将参数依次直接存入R0-R3

? 如何获得函数返回值

– 从寄存器R0中读取

当前函数所用栈容量

? 临时变量个数+函数参数个数多于4个的部分

当前函数内存布局

命令脚本文件

? 命令脚本文件

– IDE与目标板连接时

– 软件调试过程中

– 复位目标板后

? 需要集成环境自动完成一些特定的功能:

– 复位目标板、清除看门狗、屏蔽中断寄存器,等等

? 这些功能可以由一组命令序列完成,该命令序列保存在文件中。该文

件称为命令脚本文件。文件后缀一般为.cs

命令脚本文件

? 命令

– GO 执行程序:从当前PC开始执行程序

– MEMWRITE 存储区写

? 向地址0x1000写入值0x5A

? memwrite 0x1000 0x5A

– REFRESH 刷新窗口

– REGWRITE 寄存器写

? 向寄存器PC写入值0x3840

? regwrite pc 0x3840

– RESET 复位目标设备

– STOP 停止执行程序

? 命令脚本文件举例(page 122):

stop ; 一般目标板都会处于运行状态

regwrite sp 0x1000 ;程序刚执行时未初始化堆栈地址

? 命令脚本文件

– 类似于Windows操作系统中的autoexec.bat 自动执行批处理文件

命令脚本文件的设置

链接脚本文件

? 在程序编译时起作用。

? 该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段

等,链接器必须使用该文件对整个系统的代码做正确的定位。

? 在IDE开发环境中使用扩展名*.ld

程序入口地址的设置

? 默认是 global _start 标号处

? 也可以人工指定

连接后代码段的组织(默认情况下)

? 单个文件的情况

– 按源程序编写顺序

? 多个文件的情况

– 入口文件放在最前面,其余文件按字母顺序组织

? 如何查看连接后的代码

– 编译连接后可使用Tool>Disassemble all命令,会在工程的Debug目录下

生成一个objdum文件

实验步骤

参考本章其他实验,创建新的工程;

按照参考程序,根据实验内容,编写源代码文件并分别保存把他们加入工程里面;

参照其他基础实验操作,按照编译->汇编器配置->连接器配置->调试器配置设置新工程,并编译、连接工程;

下载调试文件,打开memory/register/watch/variable/call stack 窗

口,单步执行程序。通过以上窗口,跟踪程序运行,观察分析运行结果,

通过实验学会使用Embest IDE 进行应用程序的开发与调试;

理解和掌握实验后,完成实验练习题。

调试过程、结果和分析

创建新工程,根据实验内容要求


https://www.xamrdz.com/mobile/4gs1961894.html

相关文章: