(计算机软件与理论专业论文)基于gcc的dsp芯片汇编器的研究与开发.pdf_第1页
(计算机软件与理论专业论文)基于gcc的dsp芯片汇编器的研究与开发.pdf_第2页
(计算机软件与理论专业论文)基于gcc的dsp芯片汇编器的研究与开发.pdf_第3页
(计算机软件与理论专业论文)基于gcc的dsp芯片汇编器的研究与开发.pdf_第4页
(计算机软件与理论专业论文)基于gcc的dsp芯片汇编器的研究与开发.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机软件与理论专业论文)基于gcc的dsp芯片汇编器的研究与开发.pdf.pdf 免费下载

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

文档简介

独创性声明 删蚋嘲删唧i v 18 2 4 8 6 4 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及 取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论 文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得重麽 鱼g 鱼太堂或其他教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢 意。 学位论文作者签名:设怀春l 签字日期:w 叩年r 月) 2 日 学位论文版权使用授权书 本学位论文作者完全了解重庞壑电太堂有关保留、使用学位论 文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘, 允许论文被查阅和借阅。本人授权重庞虫e 鱼盍堂可以将学位论文的 全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等 复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:哽,阢礼 导师签名: 签字日期:沙呷年厂月z ,日 签字日期: 刁够肜阳 重庆邮电大学硕十论文 摘要 摘要 随着新型嵌入式芯片层出不穷,相应的高级语言汇编器是必不可 少的。然而,汇编器的复杂性决定了不可能在短时间内重新为一款新 型芯片开发出高级语言汇编器。因此,不断出现的新型芯片与新型芯 片汇编器的需求产生了尖锐的矛盾。 采用开源汇编器来实现特定芯片汇编器是一个可行的方法,它满 足开发时限的要求,并且具有普遍适用性。通过比较各种汇编器项目 优缺点和研究大量的新型芯片的体系结构,最后选用g a s 和z s p 4 0 0 d s p 芯片,作为源汇编器和目标机器。目前g a s 支持很多处理器,包括 a r m 、m i p s 、s u p e r h 、p o w e r p c 及x 8 6 。但对于芯片类型更新较快的 d s p 领域,移植g a s 的方案还没有被广泛应用。因此,实现基于g a s 的z s p 4 0 0 汇编器,对于学术研究和工业应用都有比较深远的意义。本 文的工作是实现交叉汇编器g a s 在z s p 4 0 0 平台的移植。 首先介绍了z s p 4 0 0 体系结构,随后对g a s 汇编器所使用输入输 出文件格式r t l e l f 进行了深入分析,并在分析了b f d 库的组织结构, g a s 的数据类型和工作机制的基础上,根据目标处理器的特点和要求, 实现指令编码并对b f d 库和g a s 进行了移植,说明了移植步骤和实 现过程。最后,通过o b j d u m p 工具和模拟器对基于移植后的g a s 系统 的指令和寄存器进行测试,以保证移植和开发软件的可靠性、正确性。 将g a s 成功移植到目标机z s p 4 0 0 后,能够充分发挥了机器的硬 件特性。同时为z s p 芯片开发出的汇编器符合自由软件基金标准,更 利于g a s 在d s p 领域的推广性。 关键词:嵌入式系统,g a s 移植,z s p 4 0 0 ,e l f ,b f d 重庆邮i 乜大学硕上论文 a b s 昀c a b s t r a c t a tp r e s e n t ,m a n yn e wk i n g so fe m b e d d e dc h i p sh a v eb e e nd e v e l o p e d , s oh i g h1 e v e lp r o g r a ml a n g u a g ea s s e m b l e ri s n e c e s s a r y b u ta s s e m b l e ri s s oc o m p l i c a t e dt h a ti m p l e m e n t i n ga na s s e m b l e rf o ran e wk i n do fc h i p f r o ms c r a t c hi ns h o r tt i m ei si m p o s s i b l e ,s ot h e r ei sc o n f l i c tb e t w e e nn e w k i n do fc h i p sa n dt h er e q u i r e m e n to fn e wa s s e m b l e r o p e ns o u r c ec o m p i l e rc a nb eu s e dt oa c h i e v et h i sp u r p o s e ;i tc a n s a t i s f y t h et i m er e q u i r e m e n ta n dc a nb e u s e d g e n e r a l l y t h r o u g h c o m p a r i n gs o m ek i n d s o fc o m p i l e rp r o j e c t s ,a n ds t u d yal o to fc h i p a r c h i t e c t u r e s ,g a sa n dz s p 4 0 0d s pc h i pa r eg o o dc h o i c e s g a sc a n s u p p o r ta l m o s ta 1 1o ft h ef a m o u sp r o c e s s o rs u c ha sa r m ,m i p s ,s u p e r h , p o w e r p ca n dx 8 6 b u ti nt h ed s pf i e l d ,g a sp o r th a sn o tb e e nw i d e l y u s e df o rt h e ya r er e f r e s h e dq u i c k l y z s p 4 0 0i sah i g hp e r f o r m a n c ed s p c h i p b a c k e n dp o r t i n gt oz s p 4 0 0h a sp r o f o u n dm e a n i n gt or e s e a r c h p u r p o s ea n di n d u s t r ya p p l i c a t i o n t h i sa r t i c l ei sm a i n l yr e s e a r c ho nt h e c r o s s 吨s s e m b l e ri m p l e m e n t a t i o ng a s t r a n s p l a n t a t i o na tz s p 4 0 0p l a t f o r m f i r s t ,t h i sa r t i c l ei n t r o d u c e st h ez s p 4 0 0a r c h i t e c t u r ea n da n a l v s e s t h eg a sa s s e m b l e rb i n a r yi n p u t o u t p u tf i l ef o r m a tr t l e l fi n d e p t h s e c o n d ,t h ea r t i c l ea n a l y z e st h el i b r a r yb f ds t r u c t u r e ,t h ed a t at y p ea n d t h ew o r k i n gm e c h a n i s mo fg a s ,t h e na c c o r d i n gt ot h ec h a r a c t e r i s t i ca n d r e q u i r e m e n to ft h et a r g e tp r o c e s s o r ,p o r t i n gi tt od e v e l o pan e wa s s e m b l e r f i n a l ly t h r o u g hu s i n gt h eo b jd u m pt o o l sa n ds i m u l a t o rn o wo fg a s a s s e m b l e r ,t h i sp a p e ri n t r o d u c e st h ew h o l ep h a s eo fp o r t i n g ,i n c l u d i n gt h e e d i t i o no fi n s t r u c t i o ns e t ,r e g i s t e r sa n dp e r f 6 r m st h eu n i tt e s t ,i n t e g r a t i o n t e s to nt h ep o r t e dg a ss y s t e m i nt h i sw a y ,i te n s u r e st h er e l i a b 订i t ya n d c r e d i b i l i t yo fp o r t i n g g a sh a sb e e n s u c c e s s f u 1 1 yp o r tt o t h ez s p 4 0 0c h i p ,w h i c hi s s u i t a b l ef 6 rt h ef b u n d a t i o ns t a n d a r d o ff r e es o f t w a r ef b rt h en e w p r o c e s s o rz s p m e a n w h i l e , t h i sw i l lf a c 订i t a t et h ea p p l i c a t i o no fg a si n t h ee m b e d d e ds y s t e m k e yw o r d s :t h ee m b e d d e ds y s t e mg a sp o r t i n g ,z s pc h i p ,e l f ,b f d i i 重庆邮电大学硕- 上论文 目录 研究背景及意义 d s p 数字处理器 国内外相关技术的研究现状 论文主要工作及研究内容 论文组织结构 目录 目标处理器及g a s 文件格式1 1 z s p 4 0 0 体系结构1 1 2 1 1z s p 4 0 0 模块图 2 1 2z s p 4 0 0 汇编指令格式 2 1 3z s p 4 0 0 寄存器 2 1 4z s p 4 0 0 寻址方式 2 1 5z s p 4 0 0 的流水结构及相关控制 2 2g a s 输入语言r t l 2 3g a s 输出文件格式e l f 2 3 1e l f 文件格式1 9 2 3 2e l f 格式框架 2 3 3e l f 头及节、段数据结构 2 3 4 典型的可重定位e l f 文件 2 4 小结 第三章二进制库b f d 及汇编器g a s 分析 3 1 二进制库b f d b f d 库结构 b f d 重要数据结构 b f d 后端 b f d 分析结论 19 2 0 2 3 2 4 2 5 2 5 2 5 2 6 2 7 31 3 2 汇编器g a s 3 2 3 2 1g a s 工作机制3 2 3 2 2g a s 重要的数据结构及函数域3 4 3 2 3g a s 分析结论3 7 3 3 小结3 7 i i i n , 一 一 一 一 一 一 一 _ : 一言凹引 4 6 9 1 4 4 4 5 6 8 1 l ,l 1 l 1 l 1 l 1 l f 王 1 2 3 4 3 3 3 3 重庆邮电人学硕_ :论文目录 第四章 4 1 4 2 4 3 4 4 第五章 5 1 5 2 5 3 汇编器g a s 移植 移植的准备工作 4 1 1 指令编码 4 1 2 寄存器定义 b f d 库移植 4 2 1 修改配置文件支持z s p 4 0 0 4 2 2 修改相关头文件和源文件 g a s 的移植 4 3 1 指令集移植 4 3 2 寄存器声明 ,j 、结 移植汇编器的测试 测试方案 测试环境构建 5 2 1 移植编译器的装载 5 2 2 移植汇编器的脚本配置 系统测试 5 3 1 指令翻译测试 5 3 2 寄存器测试 5 4 小结 第六章结论及未来的工作 6 1 结论 6 2 未来的工作 致 射 攻读硕士学位期间取得的成果 参考文献 i v 3 8 3 8 3 8 4 0 4 1 4 1 4 1 4 2 4 2 4 8 4 9 5 0 5 0 5l 51 5 2 5 3 5 3 5 5 5 7 5 8 5 8 5 8 5 9 6 0 6 1 蕈庆邮电大学硕士论文第一章引言 第一章引言 随着计算机在各行各业的广泛深入应用,计算机已经进入了千家万 户。而i n t e r n e t 时代的到来终将不可避免地逐步改变人们同常的工作、学习 和生活方式,以移动通信、视频电话等为代表的移动办公设备和网络产品 等一系列数字信号处理产品正在逐步形成时尚,在当今的信息社会中扮演 越来越重要的角色。 嵌入式系统通常由嵌入式处理器、嵌入式外围设备、嵌入式操作系统 和嵌入式应用软件组成。由于大多数嵌入式产品本身的软硬件环境的各种 局限,如存储器小、无操作系统等,嵌入式软件的开发一般不能在嵌入式 系统上直接开发,而是采用在宿主机器上开发,借助于交叉编译系统进行 交叉编译,最终生成可在嵌入式系统上运行的可执行代码。 编译器编译的过程一般分为预处理、编译、汇编、连接四个阶段,分 别由预处理器、编译器、汇编器和连接器来完成【l 】。要进行交叉编译,编 译系统必须具有交叉编译器、交叉汇编器和交叉连接器。l i n u x 系统广泛地 使用g n u 的各种开发工具,例如用于语言编译的g c c 、用于汇编和链接的 b i n u t i l s ( b i n a r yu t i l i t i e s ) 等,g a s ( g n ua s s e m b l e r ) 是b i n u t i l s 的一部分,它 是一个支持多目标处理器、多种目标文件格式的汇编器( 或交叉汇编器) 。 1 1 研究背景及意义 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁 剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专 用计算机系统。嵌入式计算机系统同通用型计算机系统相比具有以下特 点: 嵌入式系统通常是面向特定应用的。嵌入式c p u 与通用型的最大 不同就是嵌入式c p u 大多工作在为特定用户群设计的系统中,它通常都具 有低功耗、体积小、集成度高等特点,能够把通用c p u 中许多由板卡完成 的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能 力大大增强,与网络的藕合也越来越紧密。 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各 重庆邮电大学硕十论文第一章引言 个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密 集、资金密集、高度分散、不断创新的知识集成系统。 嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除 冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中 对处理器的选择更具有竞争力。 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和 具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命 周期。 。 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固 化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。 嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通 常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才 能进行开发。 当今的数字设备大多需要处理音频、图像和图形等多媒体数据,嵌入 式r i s c ( r e d u c e di n s t m c t i o ns e tc o m p u t e r ) 处理器也需要对这些数据进行 高效处理。很多嵌入式产品的处理器需要同时实现r i s c 处理器和 d s p ( d i 百t a ls i g n a lp r o c e s s o r ) 处理器的功能。一个明显的例子是数字蜂窝 电话,因为其中有监控和语音处理的工作。一般地,r i s c 处理器在控制上 能提供良好的性能,而在d s p 算法处理上性能较差;专用的d s p 处理器则 刚好相反。用单处理器完成两种任务是很有吸引力的,因为其可以潜在地 提供简化设计,节省版面空间,降低总功耗,降低系统成本等。因此,进 行了m a c ( m u l t i p l ya n da c c u m u l a t e ) 指令、矢量运算指令、s i m d ( 单指令多 数据) 方式和d s p ( d i g i t a ls i g n a lp r o c e s s i n g ) 体系结构集成等针对多媒体处 理的指令扩展。它们均增加了每个周期的运算量,提高了m o p s 值。 r i s c 处理器进入嵌入式产品市场时所增加的具有代表性的指令是整 数m a c 指令。这种指令由于有助于信号处理及多媒体处理的高速化且执行 起来比较简单,因此被定义于多种指令集中。 d s p 体系结构是针对多媒体处理的方法集成。以典型的s h d s p 指令格 式为例,这种处理器除了通常的r i s c 内核之外,还具有d s p 内核,以及用 于数据存储的x 存储器和y 存储器。d s p 内核包括3 2 位x 6 字寄存器、4 0 位 x 2 字寄存器、4 0 位a l u ,1 6 位乘法器和3 2 位移位器( s h i f t ) 等针对多媒体处理 的器件。指令集的c p u 指令是由r i s c 内核所执行的l6 位长度指令:而由 r i s c 内核和d s p 内核两者执行的d s p 指令是3 2 位长度指令,包括x 存储器 的存取字段、y 存储器的存取字段、采用a l u 移相器的运算字段和采用乘 2 重庆邮电大学硕上论文 第一章引占 法器的运算字段。利用这一个指令可执行四项操作,从而实现了高效的信 号处理及多媒体处理。 文中采用了z s p 4 0 0d s p 芯片作为后端移植的目标机器,选择z s p 4 0 0 d s p 芯片的原因是: 大多数的d s p 芯片都具有和z s p 4 0 0d s p 芯片类似的体系结构。因 此,实现针对z s p 4 0 0 芯片的移植,对其它体系结构的移植具有借鉴作用。 还没有任何的开源编译器支持z s p 4 0 0d s p 芯片。因此,实现对一 种新型体系结构的编译器支持,也具有很大的现实意义。 本文通过对z s p 4 0 0 体系结构的研究,并实现汇编器的移植,为芯片开 发出符合自由软件协议( f s f ) 标准【2 】的汇编器,促进其在嵌入式系统的应 用。由于本芯片是符合r i s c 指令格式的d s p 处理芯片,接下来介绍d s p 处 理器的相关内容。 1 2d s p 数字处理器 信息化的基础是数字化。数字化的核心技术之一是数字信号处理。数 字信号处理的任务在很大程度上需要由d s p 器件来完成。d s p 技术己成为 人们日益关注的并得到迅速发展的前沿技术。d s p 可以代表数字信号处理 器( d i g i t a ls i g n a lp r o c e s s o r ) ,也可以代表数字信号处理技术( d i g i t a ls i g n a l p r o c e s s i n g ) ,后者是理论上的技术要通过前者变成实际产品。两者结合起 来就成为解决某一实际问题和实现某一方案的手段即数字信号处理解决 方案( d s p s ) 。d s p 是在模拟信号变换成数字信号以后进行高速实时处理 的专用处理器,其处i t 速度比最快的c p u 还快lo 一5 0 倍在当今的数字化时代 背景f ,d s p 已成为通信、计算机、消费类电子产品等领域的基础器件。业 内人士预言,d s p 将是未来集成电路中发展最快的电子产品,并成为电子 产品更新换代的决定因素。 随着大规模集成电路技术的发展,贝尔实验室的d s p i 和n e c 的7 7 2 0 在 19 7 8 年的问世,宣布了d s p 处理器的诞生,d s p 芯片的问世标志着d s p 应用 系统由大型系统向小型化迈进了一大步。随着c m o s 技术的进步与发展, 第二代基于c m o s 工艺的d s p 芯片应运而生,其存储容量和运算速度成倍 提高,成为语音处理、图像硬件处理技术的基础。8 0 年代后期,第三代d s p 芯片问世,运算速度进一步提高,其应用于范围逐步扩大到通信、计算机 领域。 重庆邮电人学硕士论文第一章引苦 9 0 年代d s p 发展最快,相继出现了第四代和第五代d s p 器件。现在的 d s p 属于第五代产品,它与第四代相比,系统集成度更高,将d s p 核及外 围组件综合集成在单一芯片上。这种集成度极高的d s p 芯片不仅在通信、 计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。 而随着芯片技术的不断发展,芯片的复杂性也不断增加。出现了把一 个完整的系统集成到一个芯片上的技术,这就是片上系统( s o c ,s y s t e mo n ac h i p ) 。随着电子系统集成到芯片技术的不断发展,片上系统的优势和复 杂性不断增加。这给系统软件和硬件的设计者带来了新的挑战。系统软件 的设计必须考虑芯片的硬件结构。对于片上系统来说,更需要硬件和软件 的协同设计( c o d e s i g n ) 。很多情况下,满足有上亿品体管的系统设计效率要 求,唯一的途径就是采用运行专用软件的嵌入式处理器( e m b e d d e d p r o c e s s o r ) 。这给系统软件的设计带来了新的意义。而对于嵌入式系统设 计与开发,常常需要一整套的开发工具集,包括:交叉编译系统、反汇编 器、连接器、仿真器、调试器等。本文主要是对汇编器及相关库的移植进 行研究。 1 3 国内外相关技术的研究现状 嵌入式系统的软件一般需要在交叉编译环境中开发。一方面,嵌入式 软件的实际运行性能,在很大程度上受到编译系统性能的约束。一个好的 编译系统不但能实现各种方式的代码优化,提高代码的运行效率和空间利 用率,还能为开发人员提供详细明确的调试信息,加快嵌入式软件的开发 进度,降低开发成本。而另一方面,由于嵌入式系统资源有限,一般不提 供编译、汇编、连接并很难提供高级调试功能,所以嵌入式操作系统和应 用软件通常是在另外的开发平台上开发,这种开发平台由通用的计算机系 统和专用的嵌入式软件开发环境组成。嵌入式软件开发环境一般包括交叉 编译器、调试器、优化器等等。 在选择一个编译器项目时,要尽量考虑采用遵循f s f 协议的免费开源 项目,这是因为f s f 协议对自由软件的权责有明确定义,并且还要注意以 下衡量开源编译器的指标: 已经支持的目标机器的数目:如果一个编译器能够支持的处理器 类型越多,将目标机器的体系结构高效地映射到编译器上可能就越容易。 已经支持的输入语言的数目:新型编译器后端可以直接被此编译 4 重庆邮电大学硕上论文 第一章引言 器所接受的语言种类。支持的语言越多,编译器就可能越有用。 容易移植到宿主机上:如果支持的宿主机越多,则其移植性越好。 在这里宿主机就是交叉编译器的运行机器。 g n ua s ,或者简称为g a s ,是g n u 编译工具链中的汇编器,它其实是 一组汇编器的组合。根据不同的配置( c o n j f i g u r e ) 参数,它可以被配置成不 同的汇编器以支持不同的芯片和o b j e c t 文件格式,它支持多达2 0 多种芯片 和e l f ,a o u t ,c o f f 【4 】和e c o f f ,s o m 等多种o b j e c t 文件格式。 采用移植g a s 的方法与自己完全重新写一个汇编器相比有下面的一 些优点: 采用移植g a s 的方法可以利用g a s 中与芯片无关的代码,如支持各 种o b i e c t 文件格式的代码,生成源程序级( 在这里,源程序是指汇编程序) 调试信息的代码,处理近1o o 个一般汇编器指示( a s s e m b l e ri n d i r e c t i v e ) 的代 码,处理符号和表达式的代码以及一部分进行词法和语法分析的代码。 从使用者的角度来说,在一个体系结构上使用g a s 与在其它体系 结构上使用是非常相似的。各个版本之间有许多的共同之处,包括命令行 参数,o b i e c t 文件格式,绝大多数的汇编器指示以及汇编语法。 g a s 与g n u 的其它编译工具,如g n u 的编译器g c c ,g n u 的链接器 l d ,紧密地结合在一起,它可以很好地汇编g c c 产生的汇编代码,同时它的 输出可以被1 d 使用。因此,如果准备移植g n u 的g c c 编译器( 这也是为一个 新的芯片开发编译器所经常采用的一个方法) ,移植g a s 更是首选的方案。 由于不需要重新写与芯片无关的代码,为一个新的芯片写一个汇 编器的时间可以大大缩短。 汇编器和连接器是编译系统中重要的组成部分。其中汇编器( a s s e m b l e r ) 的主要功能是将用汇编语言编写的源程序转换成二进制形式的目标文件。 汇编器的输入为汇编语言程序,这些程序可以是编译器的输出结果,也可 能是手写的汇编语言程序。汇编器的输出为二进制的目标文件,这些目标 文件一般作为连接器的输入。汇编器要做的工作主要分为三部分,第一就 是计算各标号( 1 a b e l s ) 的内存地址,因为汇编器在进行指令转变时需要知道 各个符号名( s y m b 0 1 s ) 与地址的联系。第二就是将每条汇编语句转换成由操 作码、寄存器号和标号等合成的等价二进制机器指令。最后汇编器要做的 就是将汇编结果输出到一个包含二进制机器指令,数据和一些簿记信息的 目标文件( o b j e c tf i l e ) 中。目标文件一般不能够直接被拿来运行,因为它可 能引用其它文件中的函数或数据。普通的汇编器的输入为所在平台的所使 用的汇编语言的汇编程序,输出的也是由所在平台的机器指令构成的二进 重庆邮电大学硕r i :论文第一章引言 制目标文件,所使用的二进制文件格式也一般是在所在平台的格式。如在 i n t e l x 8 6 的l i n u x 环境下汇编x 8 6 汇编语言的汇编程序,输出由i n t e lx 8 6 二进 制指令的二进制目标文件,文件格式也一般是l i n u x 下常用的e l f 二进制文 件格式。而交叉汇编则不同,交叉汇编器本身运行在宿主平台上,输入的 是目标平台的汇编语言程序,输出的是目标平台的二进制指令目标文件, 使用的二进制目标文件格式也和宿主平台不一定相同。本文研究的交叉汇 编,交叉汇编器g n u a s 运行在i n t e l x 8 6 的l i n u x 环境下,输入的是z s p 4 0 0 汇编语言的汇编程序,输出的是z s p 4 0 0 机器指令的e l f 格式的二进制文 件。 当程序编译完毕以后,接着就要使用连接器来把这些组成你的程序的 各个目标文件连接起来。当程序员编写程序时,常常将代码写成函数并存 放在不同的文件中,然后将这些文件编译得到单个的目标文件。有时,一 些代码常被重复使用,这些被重复使用的代码通常被编译成为一个用来共 享的库,以减少重复劳动。连接器要完成的任务就是将各个目标文件组合 起来,如果需要还要将这些文件与它们所需要的库连接。连接器连接的过 程中需要让程序中的每段代码都知道如何去找到它需要的其它元素。例 如,如程序中如果调用了库函数中p r i n t f ( ) ( 该函数用来实现功能强大的控制 台输入输出) ,连接器就需要用库函数中的p r i n i f ( ) 的最终的地址来修改调 用函数处的目标代码。与交叉汇编类似,交叉连接与一般连接的主要不同 也是交叉连接器运行在宿主平台,而其输入输出都是针对目标平台的。 1 4 论文主要工作及研究内容 g c c 编译系统由预处理器c p p 、编译器c c l 、汇编器g n ua s 和连接 器g n ul d 四部分组成,在编译时,会被顺序执行,因此被称为工具链, 其结构如图1 1 所示。 开始,g c c 将所有的c 源文件交给c c l 程序进行处理,c c l 程序会预 处理每个源代码文件,展开它所遇到的宏。生成的结果又传递到由语法分 析器,识别c 语言的所有元素,并且根据语法规则将符号归约为非终结符。 当语法分析器将目标函数归约以后,就会调用相应的函数来完成目标函数 的编译,从而产生此函数对应的汇编代码。然后,语法分析器又去处理同 一文件中的其它函数。当一个源代码文件处理完毕以后,控制权又返回到 g c c 中,它将产生的汇编代码交给g a s ,进行后续处理。 6 重庆邮f 乜大学硕上论文 第一章引言 c 源代码 上预处理器 预处理的c 源代码 上c 语言编t r t l 汇编代码 土汇编器 二进制目标代码 上链接器 可执行文件 器 图1 1g c c 工具链 其中g n ua s 和g n ul d 【5 】都属于g n ub i n u i t l s 【6 】二进制工具包。g n u b i n u t i l s 是g n u 的二进制工具包,结构如图1 2 所示。 图1 2b i n u t i l s 的结构 包括了汇编器、连接器和其他基本的二进制目标文件处理工具。并且 它还是一个公开源码的免费软件,遵循g p l 协议,任何人都可以安装使用, 并可以修改其源代码。g n ub i n u t i l s 中的汇编器g n ua s 本身就是可以进 重庆邮 行交 移植 而实 和连 如表 表1 1b i n u t i l s 工具包中的工具 工具用途 把程序地址转换为文件名和行号。在命令行中给它一个地 a d d r 2 l i n e址和一个可执行文件名,它就会使用这个可执行文件的调试信 息指出在给出的地地址上是哪个文件以及行号。 用于建立、修改、提取库文件。库文件是包含多个目标文件的 a r 一个大大文件,其结构保证了可以恢复原始目标文件的内容。 c + + f i l e 连接器使用它来过滤c + + 符号,防l :重载函数冲突。 g p r o f 显示程序调用段的各种数据。 n m列出目标文件中的符号。 o b j c o p y 把一种目标文件中的内容复制到另一种类型的目标文件中。 显示一个或多个目标文件的信息,可以使片j 选项来控制其 o b j d u m p 显示的信息内容,它所显示的信息通常只有编写编译工具的人 才感兴趣。 r a n l i b 产生库文件索引,并将其保存剑这个库文件。 r e a d e l f 显示e l f 格式可执行文件的信息。 列出目标文件每一段的大小以及总体的大小。默认情况下, s l z e 对每个目标文件或一个库文件中的每个模块只产生一行输出。 打印某个文件的可打印字符串,这些字符串最少4 个字符 长,也可以使用选项n 设置字符串的最小长度。默认情况下, s t n n g s 它只打印目标文件初始化和可加载段中的可打印字符;对于其 它类型的文件它打印整个文件的可打印字符。 s t “p 去除目标文件中的全部或者特定符号。 g a s 将输入的汇编语句转换成可以在z s p 4 0 0 芯片上运行的,可重定 位的二进制目标代码。g a s 采用二进制格式描述符库b f d ( b i n a r yf o r m a t d e s c r i p t o r ) 来输出可重定位的二进制目标格式。如图1 3 所示。所以如果要 通过移植g n ua s 和g n ul d 来实现需要的交叉汇编器和交叉连接器,就 重庆邮l 乜大学硕上论文 第一章引言 必须也要移植b f d 库。 当所有这些工作完成以后,g n u 链接器l d 将从各个c 代码文件产生 的目标文件组合到一起,生成可执行文件。 了解了工具链的结构以后j 可以知道要将g c c 后端移植到z s p 4 0 0 芯 片,最重要的步骤是: 汇编器连接器其他 g n ua sg n ul d工具 彳 彳彳 上多上上上乡 b f d ( b i n a r yf o r m a td e s c r i p t o r ) 介 _ 一 7 u 弋 ( e l cc o f f ,a o u t 等) 二进制目标文件或库 图1 3 二进制工具集( g n ub i n u t i l s ) 系统结构图 在c c l 中增加对z s p 4 0 0 芯片的支持; 在g a s 中增加对z s p 4 0 0 芯片的支持; 在b f d 库中增加所需要的二进制目标文件格式。 而论文的主要工作是在汇编器g a s 中实现对z s p 4 0 0 芯片的支持。 1 5 论文组织结构 本文主要分为六章,内容如下: 第一章介绍研究背景及意义,及d s p 数字处理器的特点,着重介绍了 g a s 汇编器的移植开发的设计思想。 第二章着重研究目标机z s p 4 0 0 的体系结构,及g a s 前段输入语言r t l , 后端输出格式二进制目标文件e l f 。 第三章深入研究了与g a s 移植相关的二进制库b f d 的数据结构、及 b d f 后端函数,并分析了g a s 的工作机制、数据结构和相关函数。 第四章详细介绍基于g a s 的z s p 4 0 0 芯片后端移植的过程和方法,包 9 重庆邮电人学硕卜论文 括指令、寄存器编码,b f d 库移植及 第五章通过比对硬件指令手册 存器状态的正确性。 第六章总结了基于g a s 的z s p 4 出了今后所要开展的相关工作。 2 1 1z s p4 0 0 模块图 图2 1 是一个典型的z s p 4 0 0 系统,图中描述了z s p 4 0 0 的各个功能单 元,以及它们之间的关系,还进步描述了功能单元与外设的关系。 对照图2 1 ,下面分别介绍z s p 4 0 0 中的各个功能单元,以及它们之间 的关系和执行顺序。这样有助于理解整个芯片的执行过程,对实现后端移 植方法的理解有很大帮助。 控制寄存器 z s p 4 0 0 体系结构包含了一组控制寄存器,用于进行运行模式控制、 记录状态和符号信息。它具有3 2 个1 6 位的控制寄存器。在g c c 中,可 以将控制寄存器定义为一种寄存器类型。 流水线控制单元 流水线控制单元( p i p l i n ec o n t r o lu n i t 简称p c u ) 在取指和解码阶段从 存储器中提取指令。它会检查指令之间的依赖,并且进行一些组合,然后 将指令发射到相应的数据单元。只有能够并行执行的指令才能在同一个周 重庆邮电人学硕- l 论文 第_ 二章目标处理器及g a s 文件格式 m x u = e x l e m a im m o r yi n l e 内c eu 睫 h p i = h 8 s lp r o c e s s o fi n 话内c e p i o :p 嘲m m a b l e l 7 0 l c u = i n t e m j d lc o n 台矗u n i l d e u = d e 讲c ee m u l a nu n 谴 x b 屿= e 嫩m a | b u s 图2 1z s p 4 0 0 整体结构 1 2 重庆邮电火学硕十论文第二章目标处理器及g a s 文件格式 期中被发射,并且z s p 4 0 0 不支持乱序执行( o u to f0 r d e r ) 。p c u 可以在一 个周期中同时发射4 条指令,它会通知指令单元,哪4 条指令会被组合成 下一个指令包。数据单元接下来读入最多2 个3 2 位操作数,并且将它们 发送到指令执行单元。指令执行单元进行一些相应的操作,就会将得到的 操作结果写入一个通用寄存器或者写回数据单元存入内存中。写存储器操 作在流水线的写回周期执行。 指令单元 指令单元包含指令缓存,指令预取单元,分支预测逻辑单元,以及一 个指令发射单元。 指令缓存单元主要任务是对主存储器的缓存行( c a c h el i n e ) 中的指令 进行对齐,并且降低主存储器的能耗。指令预取单元会尽量保持指令缓存 处于充满状态,并且减少流水线的停滞。分支预测将会尽量避免流水线被 冲洗,从而提高处理器吞吐量。 每个指令周期中,指令发射单元都可以取出4 条指令将其发射到数据 单元和流水线控制单元。数据单元和流水线控制单元从寄存器或存储器中 取出需要的操作数,然后执行指令。 数据单元 处理器的数据单元包含数据缓存、数据预取和循环缓存单元。数据单 元还要负责数据连接操作,可以减轻将操作数从内存中载入到寄存器中的 负担。 数据缓存会将主存储器的缓存单元中的操作数进行对齐,并且可以降 低主存储器的能耗。数据预取可以尽量保持缓存处于充满状态,从而减少 流水线气泡,提高系统的吞吐量。 指令执行单元 指令执行单元将会执行d s p 芯片的所有算术逻辑运算操作。它包含了 2 个1 6 位算术逻辑单元,2 个1 6 位乘法累加单元,和一个通用寄存器文 件。 z s p 4 0 0 是一款中高性能的1 6 位的定点数字处理器( d s p ) 内核。具 有如下特点: 超标量体系结构,5 级流水线; 单周期最多执行4 条指令; 2 0 0 m h z 工作频率,8 0 0 m i p s 运算能力; 2 个1 6 位l6 位的m a c 和2 个1 6 位的a l u ; 1 6 位的指令集,扩展3 2 位支持,同级最优的代码密度。 1 3 重庆邮电大学硕上论文第二章目标处理器及g a s 文件格式 2 1 2z s p 4 0 0 汇编指令格式 以下简要介绍z s p 4 0 0 指令的汇编语言格式,因为在后端移植时,它 决定了所生成的汇编代码的正确性。z s p 4 0 0 的汇编指令一般格式如下: 【1 a b e l :】m n e m o n i c o p e r a n dl i s t 】 例如: 1 a b e l o :a b sr 0 ,r 1 其意思是:语句标号为l a b e l o ,语句功能是对r 1 取绝对值,并将结果 存入r o 中。 语句各部分的说明如表2 1 所示。 表2 1指令结构表 符号实例含义 1 a b e ll a b e l 0 代码标号 m n e m o n i ca b s指令助记符 o p e r a n d s1 i s t f 0 r l 操作数列表 2 1 3z s p 4 0 0 寄存器 z s p 4 0 0 具有1 6 个1 6 位通用寄存器:r 0 r 1 5 ,两个连续的寄存器可以 放到一起当作一个3 2 位寄存器使用。可以为所有通用寄存器在g c c 定义 一种寄存器类型,在后面进行实际移植时有详细的介绍。 两个连续的通用寄存器可以组合到一起当作累加器使用,每个累加器 还包含

温馨提示

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

评论

0/150

提交评论