数字信号处理课件:第4章 TMS320C55x汇编语言_第1页
数字信号处理课件:第4章 TMS320C55x汇编语言_第2页
数字信号处理课件:第4章 TMS320C55x汇编语言_第3页
数字信号处理课件:第4章 TMS320C55x汇编语言_第4页
数字信号处理课件:第4章 TMS320C55x汇编语言_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图4-1 非集成开发环境下C55x软件开发的流程图 通用目标文件格式 COFF,common object file format段(section)是COFF文件的基本单元。一个段是一个占据存储器里连续地址的代码或者数据块,COFF目标文件的每个段都是分开和不同的COFF目标文件通常包括3个默认段,即.text段,通常包含可执行代码.data段,通常包含初始化数据.bss段,通常为未初始化变量保留存储空间COFF文件的基本单元段汇编器通过段伪指令自动识别各个段,并将段名相同的语句汇编在一起汇编器有5条伪指令可以识别汇编语言程序的各个不同段.text、.data、.sect创建初始化段.bss

2、和.usect创建未初始化段.sect与.usect创建自定义段和子段1.未初始化段未初始化段占用处理器存储空间,常常分配到RAM未初始化段在目标文件里没有实际内容,仅仅用于保留存储空间,当程序在运行时用这些空间来创建和存储变量汇编命令.bss和.usect用来创建未初始化数据区域 .bss symbol,size,blocking flag,alignment flagsymbol .usect ”section name”,size,blocking flag,alignment flagsize:为对应段开辟的存储空间大小,单位为字blocking flag:可选参数。如果赋予一个非零值

3、给该参数,汇编器会连续分配字节空间,这些区域不会超出一页边界,除非该段大于一页(在这种情况下,目标文件会在页边界开始)alignment flag: 可选参数。如果赋予一个非零值给该参数,该段会在一个长字边界开始symbol:指向.bss或者.usect指令创建的段的第一个字,对应该存储空间的变量名。可被其他段引用,被声明为一个全局符号section name:段名每次使用.bss指令,汇编器就在对应的段开辟更多的存储空间每次使用.usect指令,汇编器就在指定的自定义段开辟更多的存储空间.bss和.usect指令不结束当前段的汇编去开始一个新的段,它们仅仅让汇编器暂时退出当前段的编辑.bss

4、和.usect指令可以出现在一个初始化段的任何地方而不会影响该段的内容2.初始化段初始化段包含可执行代码或者初始化数据;当程序被装载时,它们就被放到处理器存储空间里每个初始化段独立分配空间,可以引用在其他段定义的标识(symbol),链接器自动处理这些段间引用定义初始化段的指令:.text value.data value .sect ”section name”,valuevalue表示段指针(SPC)的开始值,只可以指定一次,必须在段第一次出现时指定。默认SPC从0开始。当汇编器遇到其中一个指令就停止当前段的汇编(就好像一个当前段结束命令),而将后面的代码汇编到另外指定的段,直到遇到另一个

5、.text、.data或者.sect指令3.自定义段.usect 创建像.bss段那样的段,这些段为变量在RAM开辟存储空间。.sect创建像.text和.data段那样包含代码和数据的段,可以创建可重分配地址的自定义段。用户可以创建多达32767个自定义段,段名可以多至200个字符。每次使用这两个指令可以用不同的section name来创建不同的段,如果用一个已经使用的section name,那么汇编器将代码和数据都汇编到同一个段。4.子段 子段是更大的段中的较小的段,链接器可以像段一样操作它 子段让用户可以更好的控制存储器映射 可以使用.sect或者.usect指令来创建子段,格式为:

6、 section name:subsection name 同一个段中的子段可以独自分配地址,也可以一起分配存储空间例,在段.text中创建一个_func子段如下: .sect “text:_func” 用户可以为其单独分配地址,也可以和.text段的其他部分一起分配地址5.段指针汇编器为每个段分配一个程序指针,这些程序指针称为段指针(SPCs)一个SPC指向一个段的当前地址初始时,汇编器设置每个SPC为0当汇编器在段中填充代码和数据时,SPC跟着增加如果重新开始汇编一个段,汇编器会记得该段SPC的原来值,并继续增加SPC例4-1,段伪指令的使用。 这是一个汇编语言程序经汇编后生成的.lst文

7、件,每行包含4个区域:Field 1: 源代码行号Field 2: 段指针Field 3: 目标代码Field 4: 初始源代码这个例子创建了5个段:.text段:包含17字节目标代码.data 段:包含7字的目标代码vectors段:.sect指令创建的自定义段,包含两个字的初始化数据.bss段:在存储器占用10个字newvars段:.usect指令创建的自定义段,在存储器中占用8个字图4-3 例4-1产生的目标代码4.2.3 链接器对段的处理链接器对段的处理:将一个或多个COFF目标文件(.obj)中的各种段作为链接器的输入段,经链接后在一个可执行的COFF模块(.out)中建立各个输出段

8、为各个输出段选定存储器地址链接器有2条伪指令支持上述任务(通常放在链接器命令文件(.cmd)中执行,是命令文件的主要内容) :MEMORYSECTIONS 如果在链接时不使用MEMORY和SECTIONS指令,则链接器使用目的处理器的默认分配算法; 有时用户不想使用默认设置,要自己进行存储器映射,就要使用MEMORY和SECTIONS等链接指令。图4-4 两个文件的链接过程TMS320C55x链接器有两个功能强大的指令,即MEMORY和SECTIONS。MEMORY指令允许用户定义一个目标系统的存储器映射,可以命名存储器的各个部分,并且指定开始地址和大小。SECTIONS指令告诉链接器合成输入

9、段为输出段,并且告诉链接器把这些输出段放在存储器的某个位置。链接命令文件用来为链接器提供链接信息,可将链接操作所需的信息放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用在链接命令文件中,可使用MEMORY和SECTIONS伪指令,为实际应用指定存储器结构和地址的映射MEMORY:用来指定目标存储器结构SECTIONS:用来控制段的构成与地址分配 链接命令文件为ASC文件,可包含以下内容:输入文件名,用来指定目标文件、存档库或其他命令文件链接器选项,它们在命令文件中的使用方法与在命令行中相同链接伪指令MEMORY和SECTIONS,用来指定目标存储器结构和地址分配赋值说明,用于给全局

10、符号定义和赋值MEMORY指令MEMORY PAGE 0: name_1(attr):origin=constant,length=constant; PAGE n: name_n(attr):origin=constant,length=constant;PAGE: 用于识别一个存储空间,可以使用多达255个页,具体决定于配置情况。 通常页0对应程序存储空间,页1对应存储器空间。每个页面表现为一个完全独立的地址空间。页0上的已配置空间和页1上的已配置空间可以交叠。Name:命名一个存储空间范围。名字可以是一到任意个字符,合法字符包括大小写26个字母、$和_。存储空间名字仅对链接器有用,在输出

11、文件或者符号里不再保留。在不同页的存储空间范围可以有相同的名字,但在一页内不允许不同空间段有相同名字和交叠。Attr: 指定与命名的存储空间范围相联系的14个属性,使用时必须放在小括号里。 属性限制输出段在存储空间的分配。如果不使用任何属性,可以把输出段分配到任何存储空间范围合法的属性包括: R:表示该存储空间可读 W:表示该存储空间可写 X:表示该存储空间可以包含可执行代码 I:表示该存储空间可以初始化Origin: 指定存储段的开始地址。 值为24位常数,可以是十进制、八进制或十六进制,单位为字节,也可以写为org或者oLength: 指定存储段的长度 值为24位常数,可以是十进制、八进制

12、或者十六进制,单位为字节,也可以写len或者lFill: 指定存储段的填充字符,为可选参数。 值为2字节整型数,可以是十进制、八进制或十六进制。 填充值用来填充没有分配程序段的存储空间,也可以写为f。SECTIONS指令SECTIONS name_1:property, property, property name_2:property, property, property name_3:property, property, property 以name开始的一行定义了一个输出段。段名name后是属性列表,这些属性定义了段的内容和段如何分配到存储器。 一个段可能的属性包括:Load allocation 定义在存储器中段被装载的位置: load=allocation 或 allocation 或 allocationRun allocation 定义在存储器中段运行的位置: run=allocation 或run allocationInput sections 定义组成输出段的输入段: 句法为 input_sectionsSection type定义特殊种类段的标志: 句法为 type=COPY 或 type=DSECT 或 type=NOLOADFill value定义用来填充未初始化空间的值: 句

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论