《先进编译技术》课程论文-陈鹏 23620149401.doc

《先进编译技术》课程论文-陈鹏 23620149401.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信 息 工 程 大 学 博 硕 士 研 究 生 《先进编译技术》课程论文 论文题目 LLVM后端移植架构及与GCC性能对比分析 学员姓名 陈鹏 学 号 23620149401 单 位 四院二教 级 别 2014级 LLVM后端移植架构及与GCC性能对比分析 摘 要: 伴随着复杂逻辑设计这样的挑战的出现,诞生了许多的基于平台的设计。在为硬件设计提供了一个好的解决方案的同时,基于平台的设计仍然需要给出一个完备的开发工具链,包括编译器、汇编器、仿真器等等。因此出现了 ADL(Architecture Description Language)以帮助进行工具链的生成。其中的 MADL(Mescal Architecture Description Language)是一个良好设计但尚不完善的 ADL。UADL(Unified Architecture Description Language)项目致力于在 MADL 的基础之上提供一个工具链自动生成的更好方法。本文是 UADL 项目的一部分,提供了对 LLVM(Low Level Virtual Machine)编译系统的后端移植,这构成了 UADL 项目进行编译器自动生成研究的基础。LLVM 架构是美国伊利诺斯大学开发的开放源代码编译器架构,本文详细分析了该架构的后端移植机制。 关键词: LLVM,编译器,后端移植, GCC 一.引言 对经过前端翻译后生成的 LLVM 中间代码,通过后端代码生成器可以生成对特定后端处理器的后端代码。生成的后端代码可以两种形式存在:一种是以目标处理器的汇编代码形式,可以通过汇编器编译后得到相应的目标处理器二进制代码,并能运行在目标处理器上;另一种是直接以二进制代码存在,不能运行在目标处理器上,但可以使用 JIT 编译器直接在本地运行。 LLVM编译器后端移植架构分析 LLVM编译器架构提供了丰富的代码生成通用框架,规定了固定的目录布局和类层次模块。每个处理器后端都位于lib/Target目录下的相应子目录中。除此之外,只需修改LLVM源码树中少量的源文件,就可以实现将新的处理器后端整合到LLVM代码库。 对于任何一个新添加到LLVM后端移植架构的目标处理器,按照后端移植架移植接口的要求实现目标处理器的体系结构特征描述,对于LLVM后端代码生成器来说,生成不同目标处理器代码所经历的阶段是相同,不同的是需要根据特定目标处理器的体系结构特征进行相应的处理操作,LLVM后端代码生成器根据后端移植架构提供的特定目标处理器体系结构特征属性来进行不同的处理,这种划分方式大大降低了编译器后端移植的复杂度。 LLVM后端移植架构描述了目标处理器体系结构的各方面属性,分别封装为描述目标处理器不同特征属性的抽象类。对于新处理器后端,首先继承LLVM后端移植架构中描述处理器属性的基本抽象类,然后根据目标处理器体系结构实现相应的特征属性函数,就获得目标处理器后端描述文件。然后将目标处理器后端描述文件存放在新创建的子目录中,并对其进行环境配置。编译操作,最终实现LLVM编译器对目标处理器后端的支持 对于Nios2处理器而言,其后端移植层次结构如图2一1所示。 图2一1 LLVM后端移植层次结构 从图2一1可看出,虚线上部表示LLVM后端移植架构提供的后端移植类接口,下部表示用户端移植架构类接口。LLVM后端移植工作主要由目标静态描述和动态描述两部分完成。目标静态描述使用TableGen描述目标处理器后端寄存器,指令,调用约定等基本属性。动态描述使用C++类描述目标处理器复杂或特殊操作。 TableGen描述的目标处理器体系结构基本信息存放在以.td为后缀的文件中。LLVM后端移植架构提供了描述目标处理器体系结构基本属性的基类例如寄存器Register,指令Instruetion等。在用户端移植架构中使用TableGen继承并扩展这些记录,获得目标处理器相关属性的TableGen描述tblg解析工具解析目标处理器体系结构的TableGen描述文件生成完整的C十十信息记录。 LLVM后端移植架构中提供大量关于描述处理器复杂特征属性的C++抽象基类,我们首先需要继承并实现这些基类。由于大多数抽象基类不直接提供任何功能的代码生成功能,只是包含目标处理器特征及性能的选择信息,这种方式可以使大量的实际算法和优化过程与具体目标无关,减少复杂特征属性描述的工作量。只需实现指定的接口就可以

文档评论(0)

enxyuio + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档