2022年GCC编译器后端移植技术 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年GCC编译器后端移植技术 .pdf》由会员分享,可在线阅读,更多相关《2022年GCC编译器后端移植技术 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、GCC 编译器后端移植技术摘要:从 gcc 编译器的体系结构出发,提出了gcc 前后端分离的结构以适合移植到不同的硬件平台, 分析了 gcc 后端移植的关键技术。重点阐述后端移植所必须的文件,并详细说明这些文件的作用,给出了 rtl中间语言的语法结构以及典型指令的rtl指令模板结构。最后通过一个实例对移植到新硬件体系结构的gcc 进行测试,结果表明针对特定的硬件体系结构,gcc 后端移植技术是可行的,能够产生正确的汇编语言代码。关键词: rtl中间语言 ; 指令模板 ; 机器描述 md; 后端移植引言近年来,嵌入式计算机系统被广泛应用于军事及空间领域的各种控制及智能系统中。在这些系统中,嵌入式
2、计算机是系统的核心和智能部件。随着集成电路技术的发展,开始设计生产具有自主产权的专用芯片,并越来越多的将其应用于航空航天等相应嵌入式计算机系统中。同时嵌入式计算机应用的不断发展给计算机技术的各个方面提出了新的要求和挑战。嵌入式系统的开发特征对开发工具提出了特殊的要求。它对于代码大小,代码性能,以及可配置性的苛刻要求,使得在桌面以及服务器端开发中表现良好的编译系统往往不能胜任。这需要为其开发专用的高级语言编译器,但是开发一个完全自主化的编译器往往需要很长时间,并不是一个可取的方案,所以把目光转向可变目标编译器1 。可变目标编译器能够针对不名师资料总结 - - -精品资料欢迎下载 - - - -
3、- - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 同的目标机器生成代码。编译器中与机器有关的部分被独立成模块,针对不同的目标机器,这些模块可以方便的进行替换。gcc 就是是可变目标编译器,作为开源编译器,它源码丰富,文档详尽,是一个支持多种高级语言和多机器平台的系统,高度优化和可移植性能是该编译系统最为突出的2 大特点。本文将详细介绍gcc 移植相关的技术。1gcc 体系结构gcc(gnu complier collection)是一个成功的支持多种高级语言和多种机器平台的系统。gcc
4、 体系结构(如图1 所示)可以划分为2 部分:与语言相关,目标机器无关的前端和与语言无关,目标机器相关的后端。图 1gcc 体系结构它是一个典型的语法制导的优化编译器23 ,前端通过词法分析,语法分析,语义分析,生成语法树,对语法树简单优化之后,将其转化为中间代码。后端接受前端产生的语法树,将其转换为中间语言的表现形式, 在此基础上进行各种优化,然后根据目标机的机器描述生成汇编程序代码4 。gcc 要实现支持多平台编译,必须解决3 个根本问题:需要设计一种较好的中间语言,在适当的层次上,向上能支撑多种语言的映射,向下能够适合多平台转换并且适合于各种优化;需要设计一种对目标机恰当的机器描述;在机
5、器描述与编译主体之间需要仔细的设计一种统一接口。将gcc 移植到一个新的硬件系统时,上述3 个名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 问题的解决是致关重要的。由于gcc 前端与语言相关 5 ,已经很成熟稳定,能够支持当今流行的大部分高级语言,如c/c+ ,java ,fortran,ada 等,所以不对前端做过多介绍,着重介绍后端技术。2rtl中间语言rtl (register transfer language) 6
6、是一种以一种虚拟寄存器(pseudo register)的方式来叙述计算机行为的语言。rtl有 5种对象:表达式,整数,宽整数,字符串和向量。其中最重要的是表达式 rtx(rtl expression)。rtx 类似于 c 的结构体,通常用指针来引用它,指针类型定义名为rtx 。每个 rtx 都具有统一的内部数据结构与外部语法。本文只涉及rtx 的外部语法,即 rtx 表达式的文本形式的语法,其一般形式为:(code: m opn1 opn2 ) ,code:rtx 操作码。该操作码指明rtx 表示的操作类型,如表示一条指令时进行某种说明。 此外,code 还确定 rtx 的操作数个数和这些操
7、作数的种类。m :机器模式。表示数据和运行结果的类型,它反映了数据类型与字长两部分信息。数据类型分为整型,浮点型和复型3 种。机器字长则分为 8 位,16位,32位,64 位等。这两部分信息组合所构成的机器方式反映了机器能表示的各种数据类型。opn:操作数。各个 rtx 表达式的操作个数以及操作数的种类是各不相同的,这取决于rtx 操作码。以下是一个实际的rtx 表达式例子,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - (i
8、nsn 7 6 0 (set (mem:si (plus:si (reg:si 54 virtualstackvars) (const_int 12 0 xfffffff4) 0 a+0 s4 a32 ) (const_int 3 0 x3) 1 (nil) 操作码“ insn ”指出这是一条表示指令的rtx ,前 3 个操作数均为整常数,分别表示本条指令编号,前一条指令编号和后一条指令编号,构成前向链和后向链(如图2 所示) 。其对应的树结构(如图 3 所示) 。3gcc 后端技术gcc 后端对于目标机器的支持全部体现在后端描述中,将gcc 移植到一个新的硬件系统时,要对新系统的处理器架构要
9、进行详细的描述,使 gcc 的后端支持新的处理器架构。本节重点介绍后端描述的结构以后端描述的自动处理。图 2insn 对象的双向链表图3rtx 表达式及其对应的树结构3.1gcc 后端描述gcc 对于后端的描述主要有3 个文件7 ,一个是 c 语言宏文件,一个 c 源文件,一个用 rtl表达式写成的机器描述文件md 。将 gcc移植到一个新的硬件系统时,要对新系统的处理器架构要进行详细的描述,使 gcc 的后端支持新的处理器架构。具体的描述文件就是上述 3 个文件: c 的宏文件, c 文件和机器描述文件md ,分别为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
10、 - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - target.h,target.c和 target.md ,target是需要移植的目标机器的代号。下面分别介绍3 种文件。3.1.1c 的宏文件c 的宏是用来描述机器和abi 的属性。一般分成以下几类:(1)控制 gcc 驱动程序选项,目标机器的特定命令行选项。这些宏定义告诉编译驱动程序以何种形式的命令行参数运行诸如预处理,编译,汇编,连接等处理步骤,在运行这些处理步骤中可能需要的查询路径名以及是否需要运行某一些特殊的处理步骤等。(2) 存储布局:要涉
11、及基本的数据类型的大小,对齐约定;(3) 应用二进制编程接口 (abi) ,如何调用函数;(4) 目标机器的寄存器使用,包括类型,基本特征,寄存器分配的顺序,用于构造堆栈的寄存器指令等等;(5) 寻址模式,描述目标机器不同的寻址模式;(6) 汇编文件输出框架格式约定, 指定汇编程序的初试数据段,正文段,一般数据段等等的格式要求, 定义汇编输出函数的函数名;(7) 调试信息输出约定,指定系统支持的调试文件格式。这些参数,其中很多不是参数核集的元素,有缺省的处理方式,但要具体地描述一个特定平台,须对它们作正确而有效的定义。它们是绝大多数平台至少提供的内容,只能描述出平台最基本的功能。3.1.2c
12、源文件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - target.h中定义的宏都是生成代码, 这给调试增加了一定的难度和复杂度,所以在target.c文件中增加一个同名函数(但是为小写字母) 。例如,在 target.h文件中,定义了这样一个宏:#define preferred_reload_class(x,class)preferred_reload_class (x, class) 为了让其可用,并保证程序的可读性,引
13、入了target_protos.h文件,在 target_protos.h中,声明了同名函数:extern enum reg_class preferred_reload_class(rtx, enum reg_class) 并且在 target.c文件中具体定义了此函数。这是一个约定,在配置的时候,配置程序会做处理。由此,可以调试这个函数,而不必在众多的文件中增加宏定义。3.1.3 机器描述 md 机器描述 md中用 rtl语言描述的指令模板是核心内容。md文件是目标机指令集的一个形式化的说明文件,它针对gcc 中的各种操作模式,描述了指定目标机支持的操作和实现情况,而并非目标指令集的简单汇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年GCC编译器后端移植技术 2022 GCC 编译器 后端 移植 技术
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内