




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章DSP编程基础,主要内容,TMS320C54x软件开发过程汇编,汇编语言程序编译,COFF通用概念汇编语言程序编译,汇编与链接汇编语言程序设计实例,1。软件开发流程图,2。汇编语言程序的编译在文本编辑器中编译符合C54x汇编程序格式要求的汇编源程序。用汇编器汇编源文件。如果在源文件中调用宏,汇编程序也会在宏库中搜索宏。组装后,目标文件(。obj)在通用目标文件格式(COFF,CommonObjectFileFormat)中生成,这被称为COFF目标文件。链接器用于链接目标文件。如果它包含一个可运行的支持库和一个目标文件库,链接器也会在受保护的库中搜索所需的成员。汇编语言程序的编译(续)和可执行COFF执行文件的生成。out)链接后。COFF执行文件被下载到C54xDSP中执行。同时,调试工具可以用来跟踪和调试或优化程序。交叉引用列表和绝对列表也可以用来生成一些包含调试信息的表。1.汇编语言源程序语法。汇编语言源程序的每一行可以由四部分组成。语法如下:标号助记符操作数;注释,2,示例:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * lab 1 . asmy=a1 * x1 a2 * x2 a3 * x3 a4 * x4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。标题“lab1.asm”,MMregSSTACK . use CT“STACK”,10h。Bssa,4;给变量分配空间。bssx,4.bssy,1 . defstart . datatable : word 1,2,3,4;数据流。word8,6,4,2,文本;以下是程序代码流start:STM#0,SWWSRaddsnowaitstatesSTM # STACK 10h,SP;设置堆栈指针STM#a,AR1AR1指向ARpt # 7;重复MVPDtable,*AR1 8次;从程序存储器到数据的调用;调用SUM子程序end:BendSUM:STM#a,AR3子程序重复加法STM#x,AR4Rptza,# 3mac * ar3,* ar4,astla, yret.end,3,语法解释,标签:用于调用此程序或其他程序的其他部分。标签是可选的,可以后跟或不带冒号“:”。标签必须从第一列开始写,但第一个字母不能以数字开头。引用标签时,标签的大小写必须相同。助记符:助记符指令、汇编指令、宏指令和宏调用。作为助记指令,它们通常是大写的。汇编命令和宏命令以句点“.”开头并且是小写的。操作数:指令中的操作数或汇编命令中定义的内容。操作数必须用逗号分隔。注:注来自“;”首先,它可以放在一行或几行。评论是可选的。(如果注释从第一列开始,也可以使用“*”符号。),4、常用汇编命令伪指令,常用汇编命令伪指令(续),常用汇编命令伪指令(续),5、COFF数据类型,3、COFF通用概念,TMS320C54x汇编器和链接器都生成CommonObjectFileFormat (COFF,CommonObjectFileFormat)对象文件。在本章中,汇编程序生成的文件被称为COFF的目标文件,链接程序生成的文件被称为COFF执行文件。目前,COFF目标文件格式已被广泛使用,因为它支持模块化(段)编程,并能为管理代码段和目标系统存储空间提供有效而灵活的方法。1.COFF文件中的一部分是占用内存映射中相邻空间的代码或数据块。每个目标文件都被分成几个段,目标文件中的每个段都是独立且不同的。COFF目标文件都包含以下三种类型的段:文本段(该段通常包含可执行代码)。数据段(该段通常包含初始化数据)。bss段(该段通常为未初始化的变量保留存储空间)和初始化段:初始化段包含数据或程序代码。文本段和数据段是初始化段。使用。区段命令也被初始化。未初始化的段:(。bss和。usect)仅用于在存储空间中保留空间,并且没有代码或数据,因此未初始化的段只有段标题,并且没有原始数据、重新定位信息、行号等。此外,如果默认段(。文本。数据和。bss)没有在程序中使用,那么它们也没有原始数据、重新定位信息、行号等。因为它们的原始数据长度为零。在汇编过程中,汇编程序根据汇编命令,使用适当的段连接程序代码和数据的所有部分,形成目标文件。2,段分类,3,段顺序,当汇编程序把汇编源程序汇编成COFF目标文件时,它会把段按“的顺序放入生成的COFF文件中。文本。数据,用户定义的初始化段。bss,用户定义的未初始化段”。因为未初始化的段(。bss和。usect)仅用于在存储空间中保留空间,没有代码或数据,未初始化的段只有段标题,没有原始数据、位置信息、行号等。此外,如果默认段(。文本。数据和。bss)没有在程序中使用,那么它们也没有原始数据、重新定位信息、行号等。因为它们的原始数据长度为零。如果有一个以上的源程序,汇编程序将把每个程序的段如下:text1,文本2。文本3。data1,data2,数据3。bss1,bss2,bss3等。使用C54X汇编工具,C54X源程序可以用汇编或C语言编写。使用汇编语言可以使用助记指令集或代数构造集,但两者不能混合使用。汇编语言的编译、汇编和链接,目标文件的中间部分和内存之间的关系,上面例子中的目标代码图,以及输入部分被组合成一个可执行的目标文件,默认的内存分配过程是:text、 text1、 text2、data、 data1、 data2、BSS、 bss1、 bss2、table、Table _ 1、Table _ 2、U _ VARS1、U _ VARS1、U _ VARS2、FFT、FFT、未使用、未配置、未配置、未使用、组装成可执行目标文件的输入段、文件之间的链接、两个指令的汇编语言比较、low _ pass _ MAC 3360 push(st1);pshmst 1 push(st0);pshmst 0 push(ar0);pshmar0push(黑色);pshmbkar2=数据(# t _ ar2);mvdm#t_ar2,ar2ar3=数据(# t _ ar3);mvdm#t_ar3,ar3ar 0=# 1;stm#1,ar0bk=# N;stm#N,bk * ar3 %=a;stla,* ar3 %重复(#(N-1),a=0;rptza,#(N-1)a=* ar2 0% * * ar3 0%;Mac*ar2 0%,*ar3 0%,a,ASM500命令格式如下:ASM 500输入文件对象文件列表文件-选项输入文件:汇编源文件名,默认后缀为。asmobjectfile:编译输出obj文件名。默认后缀是由。objlistingfile:默认后缀是。lstoptions:编译器。常见选项有:-c:如果使用此选项,编译器会忽略字母的大小写。例如,作业成本法与作业成本法相同。系统默认值区分大小写。-i:设置搜索路径。通知编译器在中查找文件。收到。包括在指定的搜索路径中。用法示例:-ic:c54x。-l:(小写l)在编译时生成一个列表文件。默认后缀是。汇编源程序使用代数指令集或。所有符号都放在符号表中。如果不使用此选项,编译器只会将全局变量放在符号表中。-v:指定版本。特别是当需要BOOTLOADER时,应该添加-v548开关。首先,看看两个汇编源程序:file1。ASM . global testloop:calltestcloop,ageq . end file 2 . ASM file 3 . ASM . global test . global test:test : mar * ar3 mar(* ar3)add # 1。Aa=a # 1 RETURN.end.end,汇编工具as 500 file 1 . ASM 500 file 2-lasm 500 file 3-mg-l . TMS 320 c 54x cofficcassemblierver 1.20 sunjul 3012:11:252000版权所有(c)1997 texasinstrumentsincorporated file 2.asm page 11.global test 23000000 test :4000endnoerrors,nowarnings,c54x汇编语言编写规范,语法:标签:指令操作数;注 #前缀表示立即数或直接地址后缀b或b表示二进制常数,例如LD#1000B,后缀q或q表示八进制常数,例如LD#10Q,十进制常数,例如LD#1000,A,C54X汇编语言编写规范,后缀h或h表示十六进制常数,例如LD#1000H,A使用。设置以定义符号的值,例如addr。set1000hstm # addr,使用ar0标签,例如blooploop:ssbxintm使用。全局用于定义全局标签,c54x汇编语言编写规范,使用符号$表示当前的PC值,如B$可以使用结构,如item . struct . int value . int deltat _ len . endstruct . array . tagitem . bsarray,I _ len,C54X汇编语言编写规范。可以定义宏,例如mypush。macroshmmahpshmmalesphpshmblendm,并使用了2。C54X连接工具。一个或多个OBJ文件可以连接成一个。使用LNK500命令输出文件。在连接期间,可以通过段定位控制命令将不同的代码和数据写入不同的存储单元。注意:由LNK500生成的OUT文件不是一个纯二进制代码文件,而是一个包含代码、符号表和代码定位信息的复合文件。例如:lnk 500 file 1 . objfile 2 . obj-ofile . out lnk 500命令常用的选项有:-eglobal_symbol:来定义程序的入口点。全局符号必须使用。源程序中的全局命令描述。使用编译器的只读存储器初始化模式。-cr:使用c编译器的内存初始化模式。-idir:指定库文件的路径。-lfilename:指定连接时要使用的库文件名。-mffilename :生成地图文件。-ofilename:指定生成的OUT文件名。系统默认为将文件1.asm和文件2.asm连接到输出文件:lnk500file1file2-mfile。通过查看映射文件,您可以获得变量、子程序和其他符号的具体地址。注意:映射文件只列出全局变量的地址。为了灵活使用C54X内存,可以将不同的代码段放入不同的内存中。下列指令可以用在汇编源程序中:该指令意味着在中保留空间。bss段。用法:使用此指令意味着在指定的段中保留空间。用法:符号。使用“节名”、大小、文本将代码或数据放入。文本段。数据把数据放入。数据段。sect将代码或数据放入指定的段。用法:symbol.sect sectionname ,size在链接时使用相应的控制命令来确定具体的内存地址。给出了以下方法之一:其中。bss。文本。数据三段是标准定义,而。维克特。缓冲区是定制的。(t.cmd),内存页面0:PROG:origin=1800h,长度=800 HP age 4: Prog : origin=0200h,长度=100 HP age 1: data a : origin=0c 00h,长度=100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国3D打印软件项目创业计划书
- 乐理三级考试题及答案
- 生产安全事故应急处置预案管理实施计划方案
- 供应链金融仓单质押担保合同模板
- 财务会计人员保密与竞业限制合同
- 跨界合作代驾泊车服务合同范例
- 茶山茶园观光旅游项目租赁合同
- 2025沈阳市住宅用房屋租赁合同范本
- 2025化工原料类购销合同
- 2025汽车贷款抵押的合同
- 山东胜利职业学院辅导员招聘考试行政管理教师岗笔试面试历年真题库试卷
- 湖南金紫宇新材料科技有限公司年产2万吨光刻胶用新型感光精细化学品项目环评报告书
- 受案登记表-模板
- 清洁评标标书答辩评分表
- 产品创新设计与实践完整版课件全套ppt教学教程电子教案讲义最全(最新)
- 《我们走在大路上》歌词
- NHK-2XP350S产品手册
- 华东师范大版初中数学八年级下册 综合与实践 图形的等分 课件(共20张PPT)
- 试运行方案计划-
- 变配电运行值班员(500kV及以上)技师-机考题库(导出版)
- 法兰规格尺寸表国标,美标
评论
0/150
提交评论