- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《混合编程实验》实验报告
姓名: 赵广元
学号: 1428403058
学院: 电子信息学院
班级: 电子信息工程
混合编程实验
一 实验目的
学习使用实时运行库
熟悉用C和汇编混合编程的方法
掌握混合编程的调试方法
二 实验环境
TMS320VC5416DSK实验板
Ccs软件
PC机
三 实验原理
1.混合编程基础:
高级语言(例如C语言)编程灵活自由,可以提高编程效率
汇编语言可以充分利用DSP的硬件结构,运算性能优于高级语言
所以可以用高级语言来编写主流程,汇编语言编写数据量大的数据处理模块
这样的优点在于:既可以保证程序良好的运算能力,又可以给程序升级和维护带来方便所以在实际编程中,可以采用混合编程
2.C语言调用汇编语言编写的函数时的编程规范:
(1)变量和函数的命名规则:
在C语言和汇编语言中均需要声明为全局变量
对函数而言,还必须在C语言中给出准确的函数原型说明
汇编语言中该名字需要加一个下划线作为前缀,但C语言中保持“自然”的命名
(2)C语言调用汇编函数的函数调用规则
C语言的程序主要是由编译器完成资源的分配,对于编程人员可以看做是一个黑盒,不必追究其内在细节
汇编语言是由汇编人员手工安排资源,所以要特别注意其使用规则要与C语言保持一致
(3)与C语言接口的汇编程序子函数而言,汇编语言中寄存器使用规则:
在子程序中自由使用的有AR0,AR2-AR5,A,B,BRC,T等
对于AR1,AR6,AR7,ST0,ST1这些寄存器,子子程序中如果要改变他们,需要先将他们在堆栈中保护起来,在程序结束时再从堆栈中弹出他们,恢复调用前的数值
在C语言中,状态标志有固定的缺省数值,可以通过查表获得。建议不要使用缺省数值,在汇编程序中最好按照自己的要求显示的设置状态位
(4)C语言调用汇编程序子函数时,分析参数传递的规则:
C语言和汇编的相互调用主要通过累加器A和堆栈来传递参数(c-int00函数将CPL置一,利用SP进行直接寻址)
在没有调用函数时,堆栈中先压入第二个参数以后的其他参数(包括第二个参数),最后一个参数压在堆栈的最下方,即按照逆序压栈
然后将第一个参数放在A中并调用函数,这时程序的返回地址将自动被压入堆栈
当函数有返回值时,在返回前被放在A中
在函数返回时,按照反方向依次调整堆栈指针
3.根据参数传递的规则,汇编函数设计方法:
保护现场(如ST0,ST1)
举例:pshm ST1
调整SP指针,为函数局部变量申请空间
Frame #-8
获取调用函数的传入函数
第一个传入参数从A累加器获取
MVDK *SP(8+1+1), AR3 ; 第二个参数
MVDK *SP(8+1+2), AR3 ; 第三个参数
编写处理程序
将返回值赋给A累加器
恢复SP指针
Frame #8
恢复现场
popm ST1
RET
四 实验步骤
1.用USB线连接PC和DSK5416,利用板上Emulator进行调试
2.启动CCS,建立一个工程。
3.建立混合汇编源程序文件。
– mix.h ;汇编函数在C语言中函数原型声明头文件
– Mix.c ;主程序文件,调用汇编函数mix_func函数
– Addfun.s54 ;汇编函数_mix_func定义的汇编文件
– mix.cmd ;链接配置文件
4.将mix.c、addfun.s54和cmd文件加入到工程。
5.设置工程的Build option,在链接选项中Include libraries(-l)项输入rts.lib,使用近调用方式调用函数。
6.Buid all
7.Load Program→Run
8.结果测试:利用View-CPU Register和View-Memory注意参数传递和SP、PC指针的变化
如果采用远调用,程序应该做哪些修改?
1.运行时支持库将rts.lib换为rts_ext.lib
2.Build option的编译选项选用-mf (远调用选项)
3.调用时返回地址占2个word,所以要访问输入参数(参
数2、3)应该与近调用时偏移量再加1
第一个传入参数从A累加器获取
MVDK *SP(8+2+1), AR3 ; 第二个参数
MVDK *SP(8+2+2), AR3 ; 第三个参数
RET要改为FRET
在函数调用汇编语句处加入断点,编译下载后点击运行按钮,之后使用step into单步执行命令,用register观察指针变化如下图所示:
从函数处开始:(sp=sp+11):
转到调用的汇编语句处:
顺序向下执行:
过程中指针变化如图:
循环:
跳
您可能关注的文档
- 社会工作综合能力竞赛试题A.docx
- 社会稳定风险分析培训教材(专业老师授课使用).ppt
- 社会责任管理体系 培训教材.ppt
- 社区急救知识普及——CPR.pptx
- 社区健康教育工作计划(共11篇).pdf
- 社区健康教育学习课件.ppt
- 社区卫生服务中心工作制度.doc
- 涉外法律人才培养目标解读(2016).ppt
- 申请建筑业企业资质标准操作实务.ppt
- 深交所资本市场培训 上市公司并购重组理论与实务.ppt
- 2025-2030航空发动机零部件市场分析及军民融合趋势与关键技术突破研究.docx
- 2025至2030中国聚羟基链烷酸酯行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030信息化产业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030家政机器人市场产业运行态势及投资规划深度研究报告.docx
- 2025至2030全球及中国双目移动裂隙灯行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030全球及中国调度台行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025-2030中国边缘计算技术发展动态及商业价值预测报告.docx
- 2025至2030中国烷基酚醛树脂行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030中国自动张力控制器行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030蓄电池行业项目调研及市场前景预测评估报告.docx
文档评论(0)