- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 TMS320C54汇编指令系统(上课用)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 命令文件清单: vectors.obj example.obj -o example.out -m example.map -e start MEMORY { PAGE 0:EPROM:org=0E000h,len=100h VECS: org=0FF80h,len=04h PAGE 1:SPRAM:org=0060h,len=20h DARAM:org=0080h,len=100h } SECTIONS { .text :EPROM PAGE 0 .data :EPROM PAGE 0 .bss :SPRAM PAGE 1 STACK :DARAM PAGE 1 .vectors :VECS PAGE 0 } 程序存储器配置了一个空间VECS,它的起始地址0ff80h,长度为04h,并将复位向量段.vectors放在VECS空间。 当’C54x复位后,首先进入0ff80h,再从0ff80h复位向量处跳转到主程序。 在命令文件中,有一条命令-e start,是软件仿真器的入口地址命令,目的是在软件仿真时,屏幕从start语句标号处显示程序清单,且PC也指向start位置(0e000h)。 程序存储器 Page 0 EPROM .text .data .vectors E000h 数据存储器 Page 1 .bss STACK 0180h SPRAM DARAM 0080h 0060h 0000h 图5.4 存储器配置图 5.5.3 重新定位 汇编器处理每个段都是从0地址开始,每段中需要需要重新定位的符号(标号)都是相对于0地址而言的。事实上,所有段都不可能从存储器中的0地址开始,因此链接器必须通过下列方法对各个段进行重新定位: 将各个段定位到存储器中,使每个段都从合适的地址开始。 将符号值调整到相对于新的段地址的数值。 调整对重新定位后符号的引用。 【例】一段采用助记符指令编写的程序,经汇编后得列表文件如下: 1 . ref X 2 . ref Z 3 0000 . text 4 0000 F073 B Y ;产生一个重定位入口 0001 0006’ 5 0002 F073 B Z ;产生一个重定位入口 0003 0000! 6 0004 F020 LD #X,A ;产生一个重定位入口 0005 0000! 7 0006 F7E0 Y: RESET 程序中有三个符号: X、Z——是在另一个模块中定义的; Y——在.text段中定义的。 当程序汇编时,X、Z的值为0——未定义的外部符号 Y的值为6——相对于.text段地址0定义 汇编器形成了两个重定位入口: X和Z:在.text段中为一次外部引用,用符号!表示; Y:是一次内部引用,用符号’表示。 链接时假设, X重新定位在地址7100h .text段起始地址重新定位在7200h 则 Y的重新定位值为7206h。 链接器利用两个重定位入口,对目标文件中的两次引用进行修正: 变成 f073 7206 变成 f020 7100 f073 B Y 0006’ f020 LD #X,A 0000! * * * * * * * * * * * * * * * * * * * * * * * * 2. 段的基本类型 COFF目标文件中的段有两种基本类型。 ? 初始化段 ? 未初始化段 (1) 初始化段 初始化段中包含有数据或程序代码。主要有: .text段——已初始
原创力文档


文档评论(0)