(计算机应用技术专业论文)基于gcc的dsp+c+compiler汇编优化初步.pdf_第1页
(计算机应用技术专业论文)基于gcc的dsp+c+compiler汇编优化初步.pdf_第2页
(计算机应用技术专业论文)基于gcc的dsp+c+compiler汇编优化初步.pdf_第3页
(计算机应用技术专业论文)基于gcc的dsp+c+compiler汇编优化初步.pdf_第4页
(计算机应用技术专业论文)基于gcc的dsp+c+compiler汇编优化初步.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(计算机应用技术专业论文)基于gcc的dsp+c+compiler汇编优化初步.pdf.pdf 免费下载

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

文档简介

基于g c c 的d s pcc o m p i l e r 汇编优化初步 中文摘要 基于g c c 的d s pcc o m p i l e r 汇编优化初步 中文摘要 g n ug c c 编译器已经被广泛应用于c i s c 、r i s c 等各种处理平台,是一种支 持多平台、多语言的、易于移植的编译系统。随着d s p 技术的发展,特别是新一代 d s p 芯片的诞生,采用汇编语言对d s p 进行的程序设计,已经越来越不能满足d s p 发展的要求。因此,迫切需要发展能够针对特定d s p 芯片的编译器,来进行高级 语言的编程。本文通过对g n ug c c 编译器的研究,提出了针对具体一个d s p 处 理器的在编译的汇编阶段的优化方案。 本文首先简要介绍了d s p 发展的概况,和目标d s p 的一些特点,并对开发的 d s p c 编译器作了简单说明。随后,分析了g c c 的一般基本原理和通用优化方法, 并介绍了目标编译器的后端处理方法。在此基础之上,本文根据开发的实际情况和 g c c 的特点,着重介绍了编译器后端的优化处理方法。针对d s p 本身固有的特点, 本文以g c c 为基础,对编译器产生的局部及全局的d s p 汇编代码提出了优化方法, 包括单周期的m a c 指令,硬件支持的循环,辅助寄存器的分配,基本块内和全局 的优化等等,并通过实际指令代码的比较测试,发现优化后的编译器生成的d s p 处理器的目标代码具有较高的执行效率。 目前,编译器已经能够稳定地进行包括g c c 的基本的优化,新增的基于目标 d s p 的基本块精简优化、辅助寄存器a r 分配替换优化、全局指令精简优化等等。 本文的工作对同类d s p 处理器的编译优化具有一定的参考价值。 关键词:g c c ,编译器,汇编,d s p ,优化 作者:瞿锋 指导老师:朱巧明教授 t h ep r i m a r ya s s e m b l e r o p t i m i z i n go f d s pc c o m p i l e r b a s e do ng c c a b s t r a c t g n u g c c c o m p i l e rh a db e e nw i d e l ya p p l i e dt oa l lk i n d sp l a t f o r m 、i n c l u d i n gc i s c a n dr i c sm a c h i n ee t c i t so n ee a s i l yt r a n s p l a n t e dc o m p i l e rs y s t e ma n ds u p p o r t s m u l t i - l a n g u a g ea n dm u l t i - p l a t f o r m a l o n gw i t hd s pt e c h n o l o g yh i g h - s p e e dd e v e l o p i n g , e s p e c i a l l y , t h en e wg e n e r a t i o nd s p c o m e sf o m l t h ea s s e m b l yl a n g u a g ep r o g r a mc o u l d n t m e e tt h er e q u i r e m e n to fd s pd e v e l o p i n gm o r ea n dm o r e s oi tn e e d sd e v e l o ph i g h - l e v e l l a n g u a g ec o m p i l e rf o rd s pp r o g r a m b yr e s e a r c ht h eg n ug c cc o m p i l e r , t h i sp a p e r p r o v i d e ss o m ep r o g r a mo p t i m i z i n gs o l u t i o nf o ro n ed e v e l o p i n gd s pcc o m p i l e r f i r s t ,t h i sp a d e rs i m p l yi n t r o d u c e sd s pd e v e l o p i n gi n s t a n c e ,a n ds o m ec h a r a c t e r so f t a r g e td s p i td o e ss o m ed e s c r i p t i o nf o rd e v e l o p i n gd s pc c o m p i l e r t h e n t h i sp a p e r a n a l y s e sg c cc o m m o nb a s i cp r i n c i p l ea n dp r o g r a m o p t i m i z i n gt e c h n i q u e s a f t e ri t ,t h i s p a p e rd o e ss o m es i m p l yi n t r o d u c t i o nf o rb a c k - e n dd e v e l o p i n gm e t h o d so ft a r g e td s pc c o m p i l e r b a s e do nt h e s ei n t r o d u c t i o n s ,a c c o r d i n gt h ea c t u a l l yd e v e l o p e dp r o c e d u r e ,a n d t h ec h a r a c t e ro fg c c t h i sp a p e rm a i n l yi n t r o d u c e sp r o g r a m o p t i m i z i n gm e t h o d so fd s p cc o m p i l e rl a s t 1 1 1 i sp a p e ra n a l y s e sa n db r i n g sf o r w a r ds o m ep r o g r a m - o p t i m i z i n g s o l u t i o n sb a s e d o nd s pc h a r a c t e r sa n dg c c i t sm a i nk e y s t o n er e s e a r c hi nt h i sp a p e r t h e r ea r em a i n l yo p t i m i z i n gf i e l d s ,i n c l u d i n gs i n g l ec i r c l em a c ,l o o ps u p p o r t e db y h a r d w a r e ,a u x i l i a r yr e g i s t e ra s s i g n e d ,b l o c ka n dw h o l ea l g o r i t h mo p t i m i z i n ge t c b y t e s t i n ga n dc o m p a r i n gt h eo p t i m i z i n gc o d ea n dn o n - o p t i m i z i n gc o d e ,t h ec o m p i l e rg e t s o n ev e r yg o o do p t i m i z i n ge f f e c ta n dh i g h e re m c i e n c yc o d e n o w , t l l i sd s pcc o m p i l e rc o u l ds t a b l yd o e ss o m eb a s i co p t i m i z a t i o no fg c ca n d s o m es p e c i a lb a s e do nd s pc h a r a c t e ro p t i m i z a t i o n ,i n c l u d i n gd s pb l o c ko p t i m i z a t i o n , a rs u b s t i t u t i n go p t i m i z a t i o n , g l o b a li n s t r u c t i o nr e d u c i n go p t i m i z a t i o n e t c o p t i m i z i n g m e t h o d s t h a t sa l lw o r kw e l l t h i sp a p e r sr e s e a r c hc o u l db r i n gs o m er e f e r e n c ef o r s i m i l a rd s pc o m p i l e rd e v e l o p i n ga n do p t i m i z i n g k e yw o r d s :g c c ,c o m p i l e r , d s p , a s s e m b l e r , o p t i m i z a t i o n 玎 w r i t t e nb y :q uf e n g s u p e r v i s e db y :z h uq i a o m i n g 苏州大学学位论文独创性声明及使用授权声明 学位论文独越性声明 3 5 6 7 0 7 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工 作所取得的成果。除文中已经注明引用的内容外,本论文不含其他个人或集体己 经发表或撰写过的研究成果,也不含为获得苏州大学或其它教育机构的学位证书 而使用过的材料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确 方式标明。本人承担本声明的法律责任。 研究生签名: 学位论文使用授权声明 日期:夥二竺多 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文合作部、 中国社科院文献信息情报中心有权保留本人所送交学位论文的复印件和电子文 档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质 论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以 公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权苏州大 学学位办办理。 逆二! :墨! 基于g c c 的d s pcc o m p i l e r 汇编优化初步 第一章d s p 综述 _ 。 第一章d s p 综述 1 1 数字信号处理技术概述 数字信号处理是一种将现实世界中的连续信号( 也就是真实信号) 转换为计算机能 够处理的离散信号的过程。这些连续信号通过一个模拟向数字的转换过程( 称之为 a d ) ,变成数字信号送给处理器,处理器通常会采取一些变换,滤波、估值、增强、 压缩、识别等数字计算处理,处理结束后。再把结果通过数字向模拟的转换过程重新 变成连续信号( 称之为d a ) 输出。下图就是数字处理技术( d s p ) 应用的一个形象说明口目: 图l - ld s p 应用示意图 数字信号处理技术的产生,是随着现代科学技术的发展,尤其是二十世纪六十年 代以来,随着计算机和信息技术的发展而发展起来的。在最近的二十多年里,数字信 号处理已经在通信、雷达、影像等领域得到广泛的应用。 数字信号处理的实现方法一般有以下几种1 1 7 1 : ( 1 ) 用c 、c + + 等语言在通用的计算机( 如p c 机) 上实现: ( 2 ) 使用专用的加速处理机实现; ( 3 ) 用m c s 一5 1 、9 6 系列等通用的单片机实现,这种方法可用于一些不太复杂的 数字信号处理,如数字控制等: ( 4 ) 用通用的可编程d s p 芯片实现。与单片机相比,通用d s p 芯片具有更加适 合于数字信号处理的软件和硬件资源,可用于许多复杂的数字信号处理算法中。 ( 5 ) 用专用的d s p 芯片实现。在一些特殊的应用场所,要求的信号处理速度极高, 用通用的d s p 芯片很难实现,例如专用于f f t 、数字滤波、卷积等相关算法 的d s p 芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现,无须 进行编程。 蔓二兰里! ! 堡堕墨主箜! 塑里! ! ! ! 竺! ! 堑塑垡些垫生 在上述的几种方法中,第一种方法的缺点是速度较慢,一般可用于数字信号处理 的模拟:第二种和第五种方法专用性强,应用受到很大的限制:第三种方法只适用于 实现简单的数字信号处理算法:。第四种方法才使数字信号的处理应用打开了新的局面。 1 2d s p 技术发展概述 d s p 芯片,也称数字信号处理器,是一种具有特殊结构的微处理器,特别适合 于对数字信号进行处理。在d s p 出现之前数字信号处理只能依靠m p u ( 微处理器) 来 完成。但m p u 较低的处理速度无法满足高速实时的要求。因此,直到7 0 年代,才 有人提出了d s p 的理论和算法基础。那时的d s p 仅仅停留在教科书上,即便是研制 出来的d s p 系统也是由分立元件组成的,其应用领域仅局限于军事、航空航天部门等。 世界上第一个单片d s p 芯片是1 9 7 8 年a m i 公司宣布的$ 2 8 1 1 ,1 9 7 9 年美国 l i n t e l 公司发布的商用可编程期间2 9 2 0 是d s p 芯片的一个主要里程碑。不过这两种 芯片内部都没有现代d s p 芯片所必须的单周期芯片。1 9 8 0 年,同本n e c 公司推出 的up d 7 7 2 0 是第一个具有乘法器的商用d s p 芯片。第一个采用c m o s 工艺生产浮 点d s p 芯片的是e t 本的h i t a c h i 公司,它于1 9 8 2 年推出了浮点d s p 芯片。1 9 8 3 年, 1 7 本的f u j i t s u 公司推出的m b 8 7 6 4 ,其指令周期为1 2 0 n s ,且具有双内部总线,从 而使数据处理的吞吐量发生了一个大的飞跃。而第一个高性能的浮点d s p 芯片应是 a t & t 公司于1 9 8 4 年推出的d s p 3 2 。 随着大规模集成电路技术的发展,1 9 8 2 年世界上诞生了首枚c m o sd s p 芯片。 其运算速度却比m p u 快了几十倍,尤其在语音合成和编码解码器中得到了广泛应用。 至8 0 年代中期,随着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 芯核及外臣元件综合集 成在单一芯片上。比如t i 的t m s 3 2 0 c 8 2 芯片,代表了d s p 新代芯片集成技术, 它将4 个3 2 位的d s p 、1 个3 2 位的r i s c 微处理器、1 个传输控制器、2 个视频控 2 些主堡! 墼里翌兰曼! 竺! ! ! 竺笙堡垡垡塑垄苎二兰里! ! 堡垄 制器和5 0 k b s r a m 集成在一个单芯片上( 即通常所说的s o c ) 。这种集成度极高的 d s p 芯片不仅在通信、计算机领域大显身手,而且已经逐渐渗透到人们日常消费领域。 d s p 芯片的突飞猛进的发展应用过程中,技术的发展主要表现为以下几个方面: 从运算速度来看,m a c ( 一次乘法和一次加法) 时间已经从8 0 年代初的4 0 0 n s ( 如 t m s 3 2 0 1 0 ) 降低到4 0 n s ( 如t m s 3 2 c 4 0 ) ,处理能力提高了1 0 多倍:d s p 芯片内 部关键的乘法器部件从1 9 8 0 年的占模区的4 0 左右下降到5 以下,片内r a m 增 加一个数量级以上;从制造工艺来看,1 9 8 0 年采用4 p 的n 沟道m o s 工艺,而现 在则普遍采用深亚微米c m o s 工艺;d s p 芯片的引脚数量从1 9 8 0 年的最多6 4 个 增加到现在的2 0 0 个以上,引脚数量的增加,意味着结构灵活性的增加:此外,d s p 芯片的发展,使得d s p 系统的成本、体积、重量和功耗都有很大程度的下降。 1 3d s p 结构介绍 d s p 芯片技术是随着微电子学、数字信号处理技术、计算机技术的发展而发展起 来的,它能够把数字信号处理的一些理论和算法实时实现。一个d s p 的芯片主要包 括四个部分:程序存储区,数据存储区,运算引擎,输入输出,如下图所示【2 8 l : 图1 2d s p 结构示意图 为了快速地实现数字信号处理运算,d s p 芯片一般都采用特殊的软硬件结构。d s p 芯片的基本结构包圳2 q 2 h : ( 1 ) 哈佛结构: ( 2 ) 流水线操作: ( 3 ) 专用的硬件乘法器; ( 5 ) 快速的指令周期。 哈佛结构: 传统的微处理器采用的冯诺依曼( v o nn e w m a n ) 结构将指令和数据存放在同一 存储空间中,统一进行编排地址,指令和数据通过同一总线访问同一地址空间上的存 储器。而d s p 芯片采用的哈佛结构则是不同于冯- 诺依曼结构的一种并行体系结构, 其主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两 个相互独立的存储器,每个存储器独立编制、独立访问。与之相对应的是系统中设置 的两条总线,即程序总线和数据总线,从而使数据的吞吐率提高了一倍。在哈佛结构 中,由于程序和数据存储器在两个分开的空间里,因此,取指令和执行指令能完全重 叠运行。 流水线: 流水线与哈佛结构相关,d s p 芯片广泛采用流水线以减少指令执行的时间,从而 增强了处理器的处理能力。处理器可以并行处理- - n 四条指令,每条指令处于流水线 的不同阶段。 专用的硬件乘法器: 在通用微处理器中,算法指令需要多个指令周期,如m c s 一5 1 的乘法指令需4 个 周期。相比而言,d s p 芯片的特征就是有一个专用的硬件乘法器,乘法可以在一个 指令周期内完成,还可以与加法并行进行,完成一个乘法和一个加法只需个指令周期。 特殊的d s p 指令: d s p 芯片的另一个特点是采用特殊的指令,比如单周期的乘加指令等,这些特殊 指令进一步提高了d s p 芯片的处理能力。 快速的指令周期: 啥佛结构、流水线操作、专用的硬件乘法器、特殊的d s p 指令再加上集成电路 的优化设计可使d s p 芯片的指令周期在2 0 0 n s 以下。 我们知道,d s p 芯片是用来专门处理数字信号的,所以根据数字信号处理的要求, d s p 芯片般具有如下的一些主要特点【2 0 】 2 q : 4 董鱼妄! 塑里! ! ! 里竺堡坐! 堑堕垡些型垄 第一章d s p 综述 弋1 。) 趸= 个瓢丽内丽丽f 两两丽j 丽丽一 ( 2 ) 程序和数据空问分开,可以同时访问指令和数据。 ( 3 ) 片内具有快速r a m ,通常可通过独立的数据总线在两块中同时访问。 ( 4 ) 具有低开销或无开销循环及跳转的硬件支持。 ( 5 ) 快速的中断处理和硬件i o 支持。 ( 6 ) 具有在单周期内操作的多个硬件地址产生器。 ( 7 ) 可以并行执行多个操作。 ( 8 ) 支持流水线操作,使取指、译码和执行等操作可以重叠执行。 与通用微处理器相比,d s p 芯片的其它通用功能相对较弱些。比如,时钟频率不 够高,可支持内存不够多,面向控制应用不够强,没有通用平台支持,通用寄存器没 有或不多,超线程支持等等。但这些都不能掩盖其在专用领域内不可替代的作用,相 对通用的c p u 而言,比如i n t e l 或a m d 的c p u ,都是无法取代其特殊地位的【1 2 1 。 1 4 目标d s p 概要“劬 在开发中,目标的d s p 是m x i c 公司m x 9 3 系列和m x 9 6 系列,下面以一款典 型的d s p 产品m x 9 6 0 3 7 为例,来介绍其主要特点: ( 1 ) 1 6b i t ,4 7 5 4 6 5d - sc y c l e ( 2 1 1 8 1 5m i p s ) d s pc o n t r o l l e r ( 2 ) 16x 16m u l t i p l i e r , o n ec y c l em u l t i p l y a c c u m u l a t e ( 3 ) 3 2b i t a l ua n d1 6b i ta u x i l i a r y a l u ( a r a u ) w o r ki np a r a l l e l ( 4 ) 8a u x i l i a r yr e g i s t e r sf o ri n d i r e c ta d d r e s s i n gw o r kw i t ha r a u ( 5 ) 1 6 l e v e lh a r d w a r es t a c ka n dn e s t a b l ei n t e r r u p ts u p p o r t ( 6 ) 3 2b i tb a r r e ls h i f t e r ( 7 ) 8i n s t r u c t i o nl o o p e du pt o1 2 8t i m e sc a p a b i l i t y ( 8 ) b l o c kp r o g r a mm o v e ( 9 ) 6 4 kw o r d sp r o g r a mr o ms p a c e ,18 km a yb ei n t e r n a l ( 1 0 ) e x t e r n a lr o mo p t i o nm a yr e p l a c ei m e m a l1 8 kf o rf a s tp r o t o t y p i n g 第一章d s p 综述基于g c c 的d s pcc o m p i l e r 汇编优化初步 ( 11 ) 6 4 kw o r d ss r a ms p a c e ,2 0 4 8w o r d si n t e r n a l ( 1 2 ) 3 2i n t e r n a l1 0a d d r e s s ( 1 3 ) 1i n d e p e n d e n ti n t e r r u p tp i n ,in m ip i n ( 1 4 ) 8m p mp i n s ( i s ) 8b i d i r e c t i o ni op i n s ( 1 6 ) 1 6 0 u t p u t p i n s ( 17 ) h o l do rs l o ws y s t e mc l o c kf o rp o w e rm a n a g e m e n t ( 18 ) 1m ss y s t e mt i c kt i m e rf o rs y s t e mt i m i n g ( 19 ) o n ec o d e c i n t e r f a c e f 2 0 ) b u i l t - i nd r a mc o n t r o l l e r , i ga d d r e s s i n gs p a c e 、v i m1 4 8 1 1 6d a t ab i ti n t e r f a c e s u p p o r t ( 2 1 ) s i n g l e5 vs u p p l y , 1 0 0p i n sp q f p 由于目标的d s p 芯片属于老式的系列,并不支持流水线操作。所以目前来说,可 以不考虑流水线方面的问题,留待以后为新款d s p 再做补充。目前,主要考虑的就是 专用的硬件乘法器、特殊的d s p 指令( t a b a ,m b s ,m p a ,e t c ) 、硬件循环支持等等这些 d s p 特有的属性,以及并行运算等等,对编译器的优化所起的作用。这样一来,开发 就相对简单一些。 1 5d s pc 编译器开发说明 一般而言,d s p 系统开发过程中有几个不可缺少的环节,包括算法设计、硬件设 计、软件设计、系统联调和项目管理等。我们此次的任务就是处于软件设计这一环节 中,为我们目标系列的d s p 设计一个c 编译器,因为我们目标的d s p 系列是一些通 用的可编程的芯片。 作为可编程芯片,应用的各种算法都是通过d s p 执行编程得到的指令实现的,因 此d s p 的软件开发在应用中就显得非常重要。虽然d s p 有适合汇编编程的特点,但 随着其应用系统变得越来越复杂,在面临不同的应用环境时,遇到的各种实时的约束 条件也越来越苛刻,这也使得对代码执行效率的要求变得越来越高。在早期,d s p 的编程都是汇编语言编程,即便是现在,还有很大一部分的d s p 是基于汇编语言的。 6 董主竺! 塑里竺竺塑竺堕! ! ! 笙塑垡些塑生 釜二兰2 翌堡堕 但是,这些都是依靠工程人员的经验来处理的,势必会带来代码性能的不稳定性。因 此,随着d s p 应用要求的不断提高,人工操作的低级语言的编程、优化等将越来越 会被编译器所替代。 但是,设计一个新的编译器,一般往往需要数年的时间,因此,设计者都希望能 够找到一种缩短开发时间的方法,修改已有的编译器就是一种有效的手段。尽管对于 不同的c p u 和系统,编译器一般也是不同的,尤其是对于又不同于一般的c p u 的 d s p 芯片。众所周知,g n uc c 已经被成功地移植到了多种类型的计算机上,包括 v l r w ( v e r yl o n gi n s t r u c t i o nw o r d ) ,超标量的r i s c 计算机,c i s c 的计算机等等,以 及一些已经过时的机器上【3 】o 在这些计算机上,g c c 都能够很好地工作,能够生成比 较高效的代码这说明它是一种可移植性很高的编译器【3 】【1 3 】。本文将在把g c c 移植 到d s p 的基础上,基于d s p 的一些独特属性,对该移植的编译器,在优化方面作些 探索性的工作。 本系统全部的移植开发工作如下: 1 d s pcc o m p i l e r 开发: ( 1 ) 生成d s p 汇编语言,目标机器为m x 9 3 ,m x 9 6 系列。 ( 2 ) 达到开发规范要求,并进行测试。 ( 3 ) 集成原有的a s s e m b l e r 、l i n k e r 到编译系统。 ( 4 ) 开发套d s pd e b u g g e rq - 具。 ( 5 ) d s p 软件仿真器的开发。 2 d s p c l i b r a r y 建立: ( 1 ) 为编译器建些基本函数库。 ( 2 ) 开发个全面测试平台。 3 硬件测试板开发: ( 1 ) 硬件功能模块图、版图和引脚图。 ( 2 ) 配套软件开发。 ( 3 ) 全面对生成的代码进行测试( 主要是对c o m p i l e r 的测试,a s s e m b l e r 和l i n k e r 是成 熟产品) 。 第二章g c c 原理和移植 基于g c c 的d s pcc o m p i l e r 编优化初步 第二章g c c 原理和移植 2 1g c c 简介 g c c 是g n uc c 的简称。1 9 8 5 年,美国人r i c h a r ds t a l l m a l l 发起并创建了世界 上第一个非营利性计算机软件组织- 自由软件基金会。该组织以追求技术创新,开 发为公众共享的软件产品为宗旨。g c c 就是该组织的一个著名的产品,它最为突出 的特点就是具有高度的可优化性和可移植性。 g c c 是由c 语言实现的,一个支持多种平台,多种语言( c ,c + + ,o b j e c tc , f o r t r a n ,p a s c a l ) 的,可优化、移植的编译系统,它所支持的处理机有一般的c i s c 处理器,有复杂的r s c 处理器,一共大约有3 0 多种,如v a x 系列,e o n v g xe l ,c 2 , s p a r c ,i 3 8 6 ,i 4 8 6 ,m i p s 系列,i n t e l 9 6 0 ,i b m r s 6 0 0 0 ,a l p h a 等等 3 1 。 g c c 之所以能支持如此多的平台,是由于它成功地采用了一种将机器相关部分 从编译中分离出来的独特方法。g n uc c 的这种编译方法适应了自由软件覆盖大部分 处理机平台的设计宗旨,而且,当需要为特定的目标机器( 如特定的专用d s p ,r i s c 芯片等等) ,设计专用的c 编译器时,只要根据需要改写部分的预处理器部分,以及 部分语法分析和词法分析部分,从而集中力量编写与机器相关部分,就可以实现结构 完整的适合特定目标及其的编译器,这样就可以减少大量的重复劳动,缩短编译程序 的开发期。 g n uc c 所采用的支持多平台的思想及其实现方法独具特色。下面就简单介绍这一方法。 g n uc c 编译系统主要r 扫_ - - 部分组成【1 1 【2 】 4 1 : ( 1 ) 与语言相关的前端: g n uc c 的前端由与源语言关系密切的预处理器部分,语法分析,语义分析组成。 它对源语言进行分析后将其转换为语法树。其中预处理器部分会因为源目标机器的不 同而有所不同 ( 2 ) 与语言无关的后端: 考t i - :6 c c 的堕cc o m p i l e r 蒌塑垡递第二章c - c c 原理和移植 后端为编译系统的主体部分,它将语法树转换成中间语言,在此中间语言基础 上,进行各种优化并完成代码生成,相应也是编译器最重要的部分。 ( 3 ) 与机器相关的机器描述【8 1 1 3 1 1 4 1 : 机器描述部分则描述g n uc c 所运行的宿主机和目标机的操作系统、体系结构、 指令系统等有关系统与硬件的情况,并提供给编译程序的后端使用。 这样采用不同的体系机器描述,将得到适合于在不同机器与系统上运行的g n u c c 版本,为g c c 的支持多平台和移植都带来了极大的方便。 2 26 c c 编译流程嘲”堋 g c c 编译器按流程来说,一般分为前端( f r o n te n d ) 和后端( b a c ke n d ) 两部分, 目标机器描述部分相对独立,主要用于后端。前端主要由预处理、语法分析、创建符 号表、语义分析、中间代码生成等几部分组成,同时,前端也进行一部分代码优化( 高 层优化) 和出错处n o 前端主要依赖于源语言,与目标机器体系结构无关。后端则主 要包括代码优化、代码选择、代码生成、寄存器分配、必要的出错处理、符号表操作 和汇编代码生成等几部分。后端主要是处理与目标机器相关的部分,一般来说,该部 分独立于源语言,仅仅依赖于中间表示( r t l ) 和目标机器l 。 另外,g c c 编译器所具有的自动生成工具,可以自动生成编译器的各种部件。利 用词法分析器的生成器( 例l e x 工具) ,可以为正则表达式生成词法分析器;利用语 法分析器的生成器( 例y a c c ) ,可以为上下文无关的文法生成移进一归约语法分析 器;利用语法制导的翻译引擎,可以生成周游和操作语法树的模块。利用代码产生器 的生成器( c o d eg e n e r a t eg e n e r a t o r ,简称c g g ) ,可以为目标机生成代码产生器( c g ) 。 g c c 主要的系统结构流程参见下图【6 1 : 图2 - 1g c c 系统结构示意图 9 星三至! 堡堡丝塑壁塑 茎主鱼! 妄箜望! ! 兰! ! 竺堡! 竺堑叁垡些婴生 整个系统的工作流程是由一个总控制程序控制( t o p l e v _ m a i n 0 ) ,经过前端分析和 后端处理两遍扫描,来完成从一个g n uc 源文件到目标机器汇编代码的转换,当然, 这是粗略的分类,如果从细的处理流程来划分,在执行所有优化的情况下,g c c 真 正完成一个g n uc 函数到生成汇编代码,需要经过至少2 0 遍的扫描处理【10 1 。 总控制程序负责初始化、译码参数、打开关闭文件和控制各遍的操作。前端分析 完成语法、语义分析和中间代码的生成。它的输入为预处理后的源文件,输出为r t l 中间代码。语法分析是该遍扫描的核心,它仅被调用一次并控制各种语义成分的翻译 和中间代码的生成。当分析一函数时,该函数中的语句将被转换成r t l ,声明和表达 式的翻译是由一个中间数据结构一语法树过渡后再生成中间代码实现的。语法树不 完全遵从c 语法,因它也被扩张用来支持其它语言。语法分析程序是由一个类似于 y a c c 但功能更强的自动生成工具g n ub i s o n 生成的,该工具接收l a l r ( 1 ) 文 法【1 0 1 【1s 】【1 6 1 。 后端处理完成各种优化、寄存器分配和汇编代码的生成。如下图所示,优化包括 全部的常规优化和主要的r i s c 优化,每种优化都是对r t l 中间代码的一遍处理,这 些优化主要有转移优化,指令调度优化,延迟分支优化等。它们都是在目标机器描述 的引导下,通过模式匹配算法完成的。局部和全局寄存器的分配是依据数据流分析进 行的,前者完成基本块内的优化,后者完成剩余的跨越基本块的优化。后端的最后一 遍处理是汇编代码的生成,在机器描述产生的各种数据结构的引导下,代码生成的主 要工作是进行指令识别、获取汇编指令模板,并据此输出指令代码,最终完成对一个 g n uc 源代码程序的翻译【1 0 】i t s 【1 6 1 。下图是一个完整的c 编译器流程图【1 5 】。 图2 - 2 g c c 编译器的结构 第二章g c c 原理和移植 基于g c c 的d s pcc o m p i l e r编优化初步 2 3d s pc 编译器结构简介磕1 本文的d s pc 编译器是基于g c c 的。通过对g c c 的分析,可以知道,根据g c c 的特点,若要设计d s pc 编译器,需要做很多改写。在前端,需要改写预处理器部 分,部分语法分析和词法分析等。在后端,则要麻烦很多,需要重写与目标机器相关 的所有部分,所有的g c c 有关的标准的优化,寄存器分配等等,都需要重新来过。 还有就是机器描述文件和机器描述宏文件的重写。机器描述文件部分这里就不做介绍 了,感兴趣的可参看相关g c c 文档。 本文的d s pc 编译器主要的结构流程和g c c 基本相似,如下图所示: 巴尹 ( s t e p1 ) j p r e p r o c e s s o r 0 l ;葛总。, 0 s y mb o it a b l e 图2 3d s p c 编译器结构 苎鱼! ! 塑里翌兰! ! 竺型! ! 笙塑垡些塑生 苎三童坚星墨塑鳖堡 第一部分是预处理器( p r e p r o c e s s o r ) ,完成从源代码中滤掉注释,进行宏替换, 处理一些辅助任务,实现一部分的错误检查以方便后续处理,减轻编译器的负担。第 二部分是词法分析器( l e x i e a la n a l y z e r ) ,编译器的词法分析器将输入流看作是称为 标记( t o k e n ) 的基本语言元素的集合,它的作用是将标记串转化为标记。词法分析器通 常是一个自包含单元,通过及少数的全程变量与编译器的其他部分进行接口,每当需 要一个新的标记时,语法分析器就调用一次词法分析器,而后者就返回标记及相关的 标记串。第三部分是语法分析器( p a r s e r ) ,它根据一定的文法,采用一种层次结构来 表示被分析语句,从而将标记流转换为一颗语法分析树。第四部分是语意分析器 ( s e m a n t i ca n a l y z e r ) ,它将所生成的语法树转化为一种便于用目标机器代码描述的中 间语言,中间语言的引入,增加了编译器设计的灵活性和通用性。当然,中间语言由 很多种形式。本文所设计的编译器是建立在对g n uc c 编译器的移植基础之上的, 它采用了一种适用于多平台的中间语言,称为寄存器传递语言( r e g i s t e rt r a n s f e r l a n g u a g e ) ,简称为r t l 。编译器的第五部分,即代码生成和优化器( c o d eg e n e r a t i o n a n do p t i m i z a t i o n ) ,正是基于r t l 这种中间语言基础之上,它完成对r t l 的分析, 生成相应的目标代码,同时对生成的代码根据目标d s p 的特性进行优化。 2 4r t l 介绍叫嘲嘲m 加” 这里,稍稍介绍一下关于g c c 中,r t l 的些基本情况,因本文所做的这部分 的工作是从r t l 阶段开始的。 g n u c 的中间语言称为寄存器传递语言( r e g i s t e r t r a n s f e rl a n g u a g e ) ,简称为r t l 。 r t l 的语法结构与l i s p 语言的表达式结构相类似。这种结构实际上是一种树结构。 利用这种类l i s p 的表示结构l t l 设计得十分简洁,灵活,它仅有1 1 5 种操作码,其 中真正用于编译内部的只有9 1 种,另外的2 4 种则只出现在机器描述中。 r t l 的最基本的元素是称为r t ) ( 的表达式。每个r 魄都具有统一的内部数据结构与 外部语法形式,内部结构实际上是树结构,其外部语法一般形式为: ( e o d e :mo p n lo p n 2 ) 对应的树结构为: 第二章g e c 原理和移植 基于g c c 的d s pcc o m p i l e r 编优化初步 其中: 1 c o d e 为r t x 的操作码: 该操作码指明r 欧表示的操作类型,如表示一条r b 【指令进行某种算术运算,或者 引用某个符号名或寄存器,或者表示某种说明等等。除此之外,c o d e 还确定r 乜【的操作 数个数和这些操作数的种类等等。 2 i l l 为机器模式,包括有q i 、h i 、p s i 、s i 、p d i 、d i 、t i 、s f 、d f 等等,共有2 4 中类型之多。 机器模式表示数据和运算结果的类型,它反映了数据类型与字长两部分信息。数据 类型分为整型,浮点和复型三种。机器字长则分8 位、1 6 位、3 2 位、6 4 位、双6 4 位等,这两部分信息有条件组合所构成的机器模式反映了机器所能表示的各种数据类 型。此外,g c c 还提供了v o i d 方式,条件结果方式和块方式。当然,并不是每一种r t x 表达式都必须有机器模式,机器模式可以缺省,缺省模式为v o i d 。 3 o p n 操作数: 每个r t x 表达式的操作数个数以及操作数种类是各不相同的,视不同的r t x 操作码 而定。r t x 的操作数分为以下五种类型: 分别为表达式( e x p r e s s i o n ) 、整数( i n t e r g e r ) ,宽整数( w i d ei n t e r g e r ) ,字符串( s t r i n g ) , 表达式集( v e c t o r ) 。 表达式( e x p r e s s i o n ) 是个c 结构,由表达式类型名( n a m eo f e x p r e s s i o nt y p e ) , 标志位( f l a g ) ,机器模式( m a c h i n em o d e ) ,和几个由空格分隔的操作数构成,其中 标志位和机器模式为可选组成部分。其结构如下: ( 表达式名标志位机器模式:操作数1 操作数2 ) 其中操作数可以由另一个表达式构成。 整数( i n t e r g e r ) 宽整数( w i d ei n t e r g e r ) 是用来表示十进制数的,通常出现在操 作数中 1 4 墨主鱼堕塑坚! 曼竺! 塑! 墼堡塑垡些塑生 蔓三兰坚堕翌塑整垫 字符串( s t r i n g ) 主要用在指令s y m b o l _ r e f 中。 表达式集( v e c t o r ) 由一系列表达式所组成,由一对 作为起始标记。 这就是r t l 的语法表达形式,这里仅稍做介绍,详细请参见相关文档。 2 5g c c 移植中的后端处理7 1m 1 6 10 7 1 首先,介绍一下编译器后端处理的整个过程,主要分两个方面:r t l 指令处理 汇编指令生成。处理流程如下图所示,下面分别作大概介绍: 图2 - 4r t l 处理流程图 1 5 优化策略控制 第二章g c c 原理和移植基于g c c 的d s p cc o m p i l e r 2 5 1r t l 指令处理”“7 2 6 1 2 7 1 编译开发时,把r t l 基本的指令( 如p l u s ,m u l t ,s e t ,e t c ) 在其所有可能出现 的情况下,进行d s p 执行时行为描述,全部保存起来,并与下面的d s p 汇编指令描 述紧密联系起来,这样,每当输入一条基本r t l 指令时,都可以在此行为描述中查 找和匹配,输出相应的一组汇编代码 r 丌。 对r t l 指令进行描述时,首先按指令类型进行分类,然后对每条指令按其要求的 机器模式进行再分类,最后是根据其操作数进一步进行细化分类。下面就以p l u s 在 整型( s i ) 模式下来说明r t l 行为描述: 指令p l

温馨提示

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

评论

0/150

提交评论