第七章伪指令和宏语言_目标文件连接_第1页
第七章伪指令和宏语言_目标文件连接_第2页
第七章伪指令和宏语言_目标文件连接_第3页
第七章伪指令和宏语言_目标文件连接_第4页
第七章伪指令和宏语言_目标文件连接_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、1伪指令伪指令 TMS320C2000/C5X的汇编伪指令可以实现以下功能:的汇编伪指令可以实现以下功能: 汇编代码和数据到指定的段;汇编代码和数据到指定的段; 为未定义的变量保存空间;为未定义的变量保存空间; 控制列表文件;控制列表文件; 分配存储器;分配存储器; 汇编条件块;汇编条件块; 定义全局变量;定义全局变量; 指定汇编器能得到的宏;指定汇编器能得到的宏; 检查符号调试信息。检查符号调试信息。7. 1 伪指令伪指令分为分为8类:类: 段定义伪指令:段定义伪指令:把汇编语句程序的各部分与适当的段联系起来。把汇编语句程序的各部分与适当的段联系起来。 .bes, .bss, .data,

2、.text, .sect, .usect,.sblock。初始化常数伪指令:初始化常数伪指令:为当前段汇编数值。为当前段汇编数值。 .space, .byte, .field, .float, .xfloat, .int, .word, .long, .xlong, .pstring,string。段程序计数器排列伪指令:段程序计数器排列伪指令: 使段程序计数器使段程序计数器SPC指向预定的位置。指向预定的位置。 align, .even。 输出列表格式伪指令:输出列表格式伪指令:控制列表文件的格式。控制列表文件的格式。 .drlist, .drnolist, .fclist, .fcnoli

3、st, .length, .width,.list,.nolist, .mlist, .mnolist, .option, .page, .sslist, .ssnolist, .tab, .title。引用其他文件伪指令:引用其他文件伪指令:为文件提供信息或提供这些文件的信息。为文件提供信息或提供这些文件的信息。. .copy, .include, .global, .def, .ref, .mlib。条件汇编伪指令:条件汇编伪指令:使汇编器根据表达式求值结果的真或假来汇编代码的某些段。使汇编器根据表达式求值结果的真或假来汇编代码的某些段。 .if, .elseif, .else, .end

4、if, .loop, .break, .endloop。汇编时的符号伪指令:汇编时的符号伪指令:使定义的符号名等同于常数值或字符串。使定义的符号名等同于常数值或字符串。 .asg, .eval, .set, .equ, .struct, .endstruct,.label 。 汇编模式伪指令:汇编模式伪指令:定义在定义在C28x 或认可或认可C2xLP模式。模式。.c28_amode, .lp_amode。其他伪指令:其他伪指令:具有其他功能和特性的伪指令。具有其他功能和特性的伪指令。 .end, .mmregs, .newblock, .port, .sblock, .version, .e

5、msg, .wmsg。7. 2 宏指令宏指令 将频繁出现的程序段定义为宏指令,将频繁出现的程序段定义为宏指令, 当程序中需要执行该程序段时,只需用一条宏调用语句。当程序中需要执行该程序段时,只需用一条宏调用语句。 缩短源程序的长度,使源程序易读,减少了书写错误。缩短源程序的长度,使源程序易读,减少了书写错误。1)定义宏:)定义宏:用户在使用宏之前必须先定义宏。在程序的任何地方都可以定义一用户在使用宏之前必须先定义宏。在程序的任何地方都可以定义一 个宏。可在源文件开始处或者在个宏。可在源文件开始处或者在.include/.copy文件中或者在宏库中定义。文件中或者在宏库中定义。格式:格式: 宏名

6、宏名 .macro 形式参数形式参数1,形式参数,形式参数2,形式参数,形式参数n 宏体宏体 .mexit .endm宏名宏名 用通常规定的字符串格式书写。用通常规定的字符串格式书写。.mexit 相当于相当于“goto .endm”,用于条件判断后的转移,可缺省。,用于条件判断后的转移,可缺省。形式参数形式参数 或称为替代符号。同样按通常规定的字符串格式书写。替代符或称为替代符号。同样按通常规定的字符串格式书写。替代符 号作为宏参数仅在被定义的宏中有效。号作为宏参数仅在被定义的宏中有效。 每个宏最多可以用每个宏最多可以用32个宏参数。个宏参数。 宏可以嵌套,但宏的所有元素都应在同一个文件中定

7、义。宏可以嵌套,但宏的所有元素都应在同一个文件中定义。7. 2 宏指令宏指令(2)调用宏:)调用宏:在定义了宏以后,就可以在源程序中将宏的名字作为操作码来调用。在定义了宏以后,就可以在源程序中将宏的名字作为操作码来调用。 格式:格式: 宏名宏名 实参数实参数1,实参数,实参数2,实参数,实参数n,7 . 2 宏指令宏指令(3)展开宏:)展开宏:汇编器在对源文件进行汇编时,对调用的宏进行展开。在展开汇编器在对源文件进行汇编时,对调用的宏进行展开。在展开过程中,汇编器用宏体取代宏调用语句,宏体中的形式参数实际参数代替。过程中,汇编器用宏体取代宏调用语句,宏体中的形式参数实际参数代替。 如果某个形式

8、参数没有对应的实参数为其赋值,该形式参数将被空串如果某个形式参数没有对应的实参数为其赋值,该形式参数将被空串 (“ ”)代替。)代替。 如果实参数的个数多于形式参数,则余下的实参数将赋给最后一个形式如果实参数的个数多于形式参数,则余下的实参数将赋给最后一个形式 参数(用逗号隔开)。参数(用逗号隔开)。 如果要把一串变量赋给一个形式参数,或者把一个逗号(或分号)传如果要把一串变量赋给一个形式参数,或者把一个逗号(或分号)传 给一个形式参数,就必须用引号将它们引起来。给一个形式参数,就必须用引号将它们引起来。 汇编时,汇编器先用实参数代替形式参数并展开宏,然后把源语句汇编汇编时,汇编器先用实参数代

9、替形式参数并展开宏,然后把源语句汇编 为目标代码,并输出到列表文件中。为目标代码,并输出到列表文件中。,7 . 2 宏指令宏指令例例6.23 宏定义:宏定义: parms .macro x,y,za=xb=yc=z.endm 调用宏:调用宏: 汇编时展开宏:汇编时展开宏: parms 100,200 ;a=100 ;b=200 ;c=“ ” parms“100,200,300”,55,66,77 ;a=“100,200,300” ;b=55 ;c=66,77 .C C源文件源文件 .ASM 汇编文件汇编文件 .CMD 命令文件命令文件 .H 头文件头文件 .PRJ 工程文件工程文件 .LST

10、列表文件列表文件 .MAP 映射文件映射文件 .OBJ目标文件目标文件 .OUT 可执行文件可执行文件 7 .4 目标文件链接目标文件链接DSP系统中常用的文件后系统中常用的文件后缀缀 COFF目标文件总是包括目标文件总是包括3个默认的段个默认的段 : 文本段:文本段:用用.text定义,通常包括可执行代码。定义,通常包括可执行代码。 数据段:数据段:用用.data定义,通常包括已定义,通常包括已初始化的初始化的数据。数据。 预留段:预留段:用用.bss定义,通常定义,通常保留保留用于用于未初始化变量的空间未初始化变量的空间。段段 7.4 目标文件链接目标文件链接目目标文件的最小单位被称为标文

11、件的最小单位被称为段段,它是在存储器中占有连,它是在存储器中占有连续空间的续空间的代码块或数据块代码块或数据块。u 汇汇编器在汇编过程中建立这些段,链接器把段编器在汇编过程中建立这些段,链接器把段重定位重定位到目标存储器中到目标存储器中u 所有的段都是独立的、可定位的所有的段都是独立的、可定位的u 相同的段将按相同的段将按先后先后次序定位在连续的区域内次序定位在连续的区域内u 未初始化段未初始化段被定位到被定位到RAM内;内;初始化段初始化段可单独定位在可单独定位在RAM或或ROM内,内, 并且在链接并且在链接时时,还还可引用其他段内定义的符号可引用其他段内定义的符号 汇编器为每个汇编器为每个

12、段段设置了一个设置了一个独立的独立的程序计数器,这些计数器称为程序计数器,这些计数器称为段程序段程序计数器计数器(SPC,Section Program Counters)。)。 可以用段程序计数器可以用段程序计数器排列排列伪指令伪指令.align或或.even,强迫,强迫SPC指向预定的位置。指向预定的位置。段段 段程序计数器段程序计数器 7.4 目标文件链接目标文件链接 链接器链接器通过链接通过链接COFF目标文件建立可目标文件建立可 执行文件,执行文件, 目标文件中的目标文件中的段段是链接时的重要依据。是链接时的重要依据。 链接器可把链接器可把段段定位到用户系定位到用户系 统已配置的存储

13、器中。统已配置的存储器中。 链接器命令文件(链接器命令文件(.cmd)则给出链接器在链接时的有关信息则给出链接器在链接时的有关信息 DSP芯片的存储器配置随应用的不同而不同芯片的存储器配置随应用的不同而不同.用链接器伪指令用链接器伪指令 MEMORY(存储器伪指令)可以确定目标系统的各种内存配置。(存储器伪指令)可以确定目标系统的各种内存配置。 当当MEMORY决定了存储器模式后,可以用链接器伪指令决定了存储器模式后,可以用链接器伪指令SECTIONS (段伪指令)确定链接器组合输入段的方法和输出段在存储器中的位置。(段伪指令)确定链接器组合输入段的方法和输出段在存储器中的位置。 如果不使用这

14、两条伪指令,链接器则用默认存储器的定位方式来组合段,如果不使用这两条伪指令,链接器则用默认存储器的定位方式来组合段, 并把它们定位到存储器中。并把它们定位到存储器中。7.4 目标文件链接目标文件链接链接器命令文件链接器命令文件和和链接器伪指令链接器伪指令链接时给符号赋值链接时给符号赋值 赋值语句的语法:赋值语句的语法:链接器中赋值语句的语法类似于链接器中赋值语句的语法类似于C语言中赋值语句语言中赋值语句语法。语法。 符号符号 = 表达式表达式 ;把表达式的值赋予符号;把表达式的值赋予符号 符号符号 += 表达式表达式 ;把表达式的值加到符号上;把表达式的值加到符号上 符号符号 -= 表达式表达

15、式 ;从符号减去表达式的值;从符号减去表达式的值 符号符号 *= 表达式表达式;符号乘以表达式;符号乘以表达式 符号符号 /= 表达式表达式;符号除以表达式;符号除以表达式 把把SPC赋予符号赋予符号“.”:“.”表示定位期间表示定位期间SPC的当前值。的当前值。“.”符号符号仅仅可用可用在在 SECTIONS伪指令内的赋值语句中,用来表示段的当前运行地址。伪指令内的赋值语句中,用来表示段的当前运行地址。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 赋值表达式:链接器表达式必须遵循以下规则:赋值表达式:链接器表达式必须遵循以下规则: 表达式可包含全局

16、符号、常数,以及表达式可包含全局符号、常数,以及表表7-3-1所列的所列的C语言运算符。语言运算符。 所有数被当做长整数(所有数被当做长整数(32位)处理。位)处理。 链接器用和汇编器相同的方式识别常数链接器用和汇编器相同的方式识别常数。见见表表7-3-2. 表表达式中的符号只具有符号的地址值,不进行类型检查。达式中的符号只具有符号的地址值,不进行类型检查。 链接器表达式可以是绝对的或可重定位的。链接器表达式可以是绝对的或可重定位的。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 MEMORY伪指令伪指令 确定在目标系统中具有确定在目标系统中具有物理位

17、置物理位置,且且可被程序使用的可被程序使用的存储器范围存储器范围。MEMORY伪指令的一般语句形式为:伪指令的一般语句形式为:MEMORY PAGE 0: 存储器名存储器名1(属性)(属性):ORIGIN=常数常数, LENGTH=常数常数 PAGE n: 存储器名存储器名n(属性)(属性): ORIGIN=常数常数,LENGTH=常数常数 7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令PAGE: 定义一个存储器空间,用户可以定义多达定义一个存储器空间,用户可以定义多达255页。页。 PAGE0定义定义程序存储器程序存储器,PAGE1定义定义数据存储器

18、数据存储器, 2812只有只有这两个页这两个页。如果用户没有使用如果用户没有使用PAGE选项,那么链接器把段定位到选项,那么链接器把段定位到PAGE0。每个每个PAGE代表一个完全独立的地址空间。代表一个完全独立的地址空间。在在PAGE0上已配置的存储器可以和在上已配置的存储器可以和在PAGE1上已配置的存储器重叠。上已配置的存储器重叠。存储器名:存储器名: 命名存储器范围。由命名存储器范围。由18个字符组成。个字符组成。名字对于链接器没有特殊的意义,仅指明存储器的区域。名字对于链接器没有特殊的意义,仅指明存储器的区域。在不同页上存储器范围可以有相同的名字,在不同页上存储器范围可以有相同的名字

19、,在同一页,所有的存储器范围在同一页,所有的存储器范围不能不能有有相同相同的名字,且的名字,且不能重叠不能重叠。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令属性:属性:可选项,当被使用时,必须用括号括起来。属性把输出段的定位限制在某可选项,当被使用时,必须用括号括起来。属性把输出段的定位限制在某 些存储器范围内。些存储器范围内。如果如果用户不使用任何属性,用户不使用任何属性,则则输出段即可以输出段即可以定位到定位到任何任何 范围内。有效的属性包括:范围内。有效的属性包括:R存储器可读;存储器可读; W存储器可写;存储器可写; X储器可以包含可执行代码

20、;储器可以包含可执行代码; I存储器可被初始化。存储器可被初始化。ORIGIN:指定存储器的起始地址,也可以写成指定存储器的起始地址,也可以写成org或或o。这个值是以字节规定。这个值是以字节规定 的的16位常数,也可以是十进制、八进制或十六进制。位常数,也可以是十进制、八进制或十六进制。 LENGTH:指定存储器的长度指定存储器的长度,也可以写成也可以写成len或或l。数值的表示与。数值的表示与origin相同相同 当用户使用当用户使用MEMORY伪指令时伪指令时,要确信已指定了所有可要确信已指定了所有可 用于装载代码的存储器范围。用于装载代码的存储器范围。 链接器链接器不不把程序把程序放到

21、放到未配置的存储器中。未配置的存储器中。注意:注意:7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令例例6.24 MEMORY指令举例指令举例 / * Sample Command file with MEMORY directive * /file1.obj file2.obj -o prog.out MEMORY PAGE0: ROM: ORIGIN=0C00h ,LENGTH=1000h PAGE1: SCRATCH: ORIGIN =60h, LENGTH =20h RAM: ORIGIN =200h, LENGTH =200h 该例定义了一个存

22、储器系统:具有程序存储器中地址为该例定义了一个存储器系统:具有程序存储器中地址为0C00h,长度为,长度为4K字字的的ROM;数据存储器中地址为;数据存储器中地址为60h,长度为,长度为32字字的的RAM;数据存储器;数据存储器中地址为中地址为200h,长度为长度为512字字的的RAM。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 SECTIONS伪指令伪指令 描述描述输入段怎样被输入段怎样被组合到组合到输出段内;定义在执行程序中的输出段;输出段内;定义在执行程序中的输出段; 规定输出段规定输出段在存储器中在存储器中的位置;允许重新命名输出段。的位置

23、;允许重新命名输出段。SECTIONS伪指令的一般语法形式是:伪指令的一般语法形式是:SECTIONS 段名段名1:特性特性1,特性,特性2, 段名段名2:特性特性1,特性,特性2, 指令中的每一行从段名开始定义输出段,输出段是输出文件内的段。指令中的每一行从段名开始定义输出段,输出段是输出文件内的段。在段名之后是特性列表(以在段名之后是特性列表(以逗号逗号隔开)隔开),定义段的内容以及它是怎样被分配的。定义段的内容以及它是怎样被分配的。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令特性列表的选项(段所具备的特性)有以下几种。特性列表的选项(段所具备的

24、特性)有以下几种。 装载地址:装载地址:规定段将被装载在存储器中的位置。规定段将被装载在存储器中的位置。 语法:语法:load = allocation 或或 allocation 或或 allocation allocation是是MEMORY伪指令所定义的范围内地址。伪指令所定义的范围内地址。 运行地址:运行地址:定义段在存储器内运行的位置。定义段在存储器内运行的位置。 语法:语法:run = allocation 或或 run allocation 如果在一个段中如果在一个段中 load 和和 run 的地址相同,的地址相同, run 可以省略。可以省略。 链接器为每个输出段分配两个目标

25、存储器地址:装载地址和运行地址。链接器为每个输出段分配两个目标存储器地址:装载地址和运行地址。通通常这两个地址是相同的常这两个地址是相同的。但有时用户可能把代码装入存储器的一个区域却在另。但有时用户可能把代码装入存储器的一个区域却在另一个区域运行它。例如在引导加载程序,用一个区域运行它。例如在引导加载程序,用load设置它的装载地址,用设置它的装载地址,用run设置设置它的运行地址。它的运行地址。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 调准地址:调准地址:规定段应在规定段应在地址边界地址边界上开始。调准可以使链接器把输出段放在位上开始。调准可以

26、使链接器把输出段放在位 于于n字边界的地址,其中字边界的地址,其中n是是2的幂。的幂。 语法:语法:align=n 或或align=(n) 如如 .text align=128, 即将即将.text段定位于页边界。段定位于页边界。 块地址:块地址:规定段必须装在两个地址边界之间规定段必须装在两个地址边界之间,它把段定位在大小为它把段定位在大小为n的块内的块内 任何地方,如果段大于块,那么段将从该边界开任何地方,如果段大于块,那么段将从该边界开 始。和调准一始。和调准一 样,样,n必须是必须是2的幂。的幂。 语法:语法:block=n 或或 block(n) 如如 .bss load=block

27、(0 x80)。 定位定位.bss段使其包含在单个段使其包含在单个128字的页内或者从新页开始。用户可以单独使用字的页内或者从新页开始。用户可以单独使用调准或块,也可以和装入地址、运行地址结合在一起使用,但是调准或块,也可以和装入地址、运行地址结合在一起使用,但是调准和块不能一调准和块不能一起使用。起使用。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 输入段:输入段:定义组成输出段的输入段。定义组成输出段的输入段。 语法:语法: input_sections 输入文件中的段组合起来形成输出段,链接器按照所列出的输入段的次序输入文件中的段组合起来形成输

28、出段,链接器按照所列出的输入段的次序链接并组合它们。输出段的大小是组成它的输入段的大小之和。链接并组合它们。输出段的大小是组成它的输入段的大小之和。 通用类型的段的规格说明中没有输入段。通用类型的段的规格说明中没有输入段。 如如 :SECTIONS .text: .data: .bss : 此时链接器从输入文件取出所有此时链接器从输入文件取出所有.text段并把它们组合到段并把它们组合到.text输出段内。链接器输出段内。链接器按照它在输入文件中遇到的次序链接按照它在输入文件中遇到的次序链接.text输入段,对输入段,对.data和和.bss段的操作与段的操作与.text相相同。同。 用户也可

29、以明确规定组成输出段的输入段用户也可以明确规定组成输出段的输入段,每个输入段用它的文件名和段名来每个输入段用它的文件名和段名来标志。标志。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令例例6.25 SECTIONS .text f1.obj(.text) f2.obj(sec1) f3.obj f3.obj(.text,sec2) 输入段不必相互同名也不必和输出段同名。如果列举输入文件时不带段,输入段不必相互同名也不必和输出段同名。如果列举输入文件时不带段,那么它所有的段将被包含在输出段之内。那么它所有的段将被包含在输出段之内。7.4 目标文件链接目标

30、文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 段类型:段类型:定义特殊段类型的标志。定义特殊段类型的标志。 语法:语法:type=COPY 或或 type=DSECT 或或 type=NOLOAD 用户可以把这用户可以把这3种特殊的类型赋予输出段。用种特殊的类型赋予输出段。用COPY和和DSECT创建的段是一创建的段是一个虚段个虚段,它不包括在输出段存储器分配内,也不占据存储器空间,不包括在存储,它不包括在输出段存储器分配内,也不占据存储器空间,不包括在存储器映象列表中。但在虚段中定义的全局符号可以被其他输入段引用,器映象列表中。但在虚段中定义的全局符号可以被其他输入段引用

31、,COPY段可段可以将段的内容、重定位信息及行号信息放在输出模块中,而以将段的内容、重定位信息及行号信息放在输出模块中,而DSECT段则不放置。段则不放置。 NOLOAD创建的段不将段的内容、重定位信息及行号信息放在输出模块中,创建的段不将段的内容、重定位信息及行号信息放在输出模块中,但链接器为其分配空间并包括在存储器映象列表中。但链接器为其分配空间并包括在存储器映象列表中。 7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 填充值:填充值:定义用于填充初始化空位的数值。定义用于填充初始化空位的数值。 语法:语法:file=value 或或name: =

32、value 当初始化输出段内有空位存在时,链接器必须提供原始数据以填充它。链接当初始化输出段内有空位存在时,链接器必须提供原始数据以填充它。链接器用器用16位数值填充空位,该数值在存储器内复制直至它填满空位为止。位数值填充空位,该数值在存储器内复制直至它填满空位为止。7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令例例6.26 SETIONS伪指令的使用伪指令的使用file1.obj file2.obj -o prog.out SECTIONS .text: load=ROM run=0800h .const: load=ROM .bss: load=R

33、AM vectors: load=0FF80h t1.obj (.intvec1) t2.obj(.intvec2) endvec= . .data : align=16 7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 链接器举例链接器举例 例例6.27是一个名为是一个名为demo.cmd的链接器命令文件,它链接了的链接器命令文件,它链接了3个目标文件:个目标文件:demo.obj,fft.obj和和tables.obj,并创建了一个名为,并创建了一个名为demo.out的可执行程序。假的可执行程序。假设目标存储器具有下列配置。设目标存储器具有下列配置

34、。程序存储器:程序存储器:地址范围地址范围 内容内容 0 x3F0000 0 x3FFFBF 片内片内ROM 0 x3FFFC0 0 x3FFFFF 中断向量表中断向量表数据存储器:数据存储器:地址范围地址范围 内容内容 0 x000040 0 x0001FF 堆栈堆栈 0 x000200 0 x0007FF RAM_1 0 x3ED000 0 x3EFFFF RAM_27.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令例例6.27 命令文件命令文件exmp.cmd /* 定义链接器选项定义链接器选项*/ -e SETUP /* 定义程序入口定义程序入口

35、*/-o demo.out /* 命名输出文件命名输出文件 */-m demo.map /* 创建一个输出列表文件创建一个输出列表文件*/ /* 定义输入文件定义输入文件 */demo.obj /* 链接三个目标文件链接三个目标文件 */fft.objtables.obj /*定义存储器配置定义存储器配置 */MEMORYPAGE 0:ROM (R):ORIGIN = 3F0000h, LENGTH =0FFC0h VECTORS (R): ORIGIN = 3FFFC0h,LENGTH = 0040h PAGE 1:STACK (RW):ORIGIN = 000040h, LENGTH =

36、01C0h RAM_2 (RW) : ORIGIN = 000200h, LENGTH = 0600h RAM_1 (RW) : ORIGIN = 3ED000h, LENGTH = 3000h SECTIONS vectors:VECTORS, PAGE=0 .text: load = ROM, PAGE=0 .data:file=07A1Ch, load=RAM_1,PAGE=1 tables.obj(.data) fft.obj(.data) +=100h ; /*创建一个长度为创建一个长度为100的空间,用的空间,用07A1Ch填充填充*/ var_defs: RAM_2 page=1

37、 /*包含在包含在dmo.obj文件中文件中var_defs段的变量链接到数段的变量链接到数 据块据块RAM_2中中* .bss: RAM_1, page=1, fill=0FFFFh /* .bss的填充和链接的填充和链接*/ 7.4 目标文件链接目标文件链接链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令链接器命令文件和链接器伪指令 TMS320C228x器件的默认定位器件的默认定位MEMORY PAGE 0:PROG: ORIGIN = 0 x000040H, LENGTH = 0 x3FFFC0H PAGE 1: DATA: ORIGIN = 0 x

38、000000H, LENGTH = 0 x010000H PAGE 1: DATA1:ORIGIN = 0 x010000H, LENGTH = 0 x3F0000H SECTIONS .text: PAGE = 0 .data:PAGE = 0 .cinit: PAGE = 0 /*仅在仅在C程序中使用程序中使用* .bss: PAGE = 1 用户没有使用用户没有使用MEMORY和和SECTIONS的情况下,存储器使用该默认定位的情况下,存储器使用该默认定位7.4 目标文件链接目标文件链接7.4 程序举例程序举例 公用文件公用文件 程序设计时,需在多个模块中使用相同设置和中断处理程序设计时,需在多个模块中使用相同设置和中断处理: 将芯片中映射至将芯片中映射至I/O空间的寄存器地址及标号、预置变量空间的寄存器地址及标号、预置变量和常数的空间等设置语句集中在一个文件中,称为和常数的空间等设置语句集中在一个文件中,称为I/O寄存器寄存器头文件(如头文件(如init.h);); 将转移中断矢量地址的指令集中在一个文件中,称为将转移中断矢量地址的指令集中在一个文件中,称为中中断矢量头文件(如断矢量头文件(如vector.h);

温馨提示

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

评论

0/150

提交评论