您现在的位置:网站首页答辩论文计算机毕业设计计算机论文计算机软件

[计算机编译系统] 支持多平台编译系统的理论、分析与..

  • 简介: 原文 前 言C/UNIX/RISC是计算机系统平台的发展趋势。这种“语言/操作系统/机器”的组合,基于它们共有的优势:利用简洁、灵活的内核功能,层层积累外展功能,富有可扩性、兼容性和可靠性。其中,C的实现是引入UNIX的关键,良好的优化编译器...
    • 请与管理员联系购买资料 QQ:5739126
  • 论文简介
  • 相关论文
  • 论文下载
原文

前 言
C/UNIX/RISC是计算机系统平台的发展趋势。这种“语言/操作系统/机器”的组合,基于它们共有的优势:利用简洁、灵活的内核功能,层层积累外展功能,富有可扩性、兼容性和可靠性。其中,C的实现是引入UNIX的关键,良好的优化编译器又是RISC技术的核心之一。所以,研制C平台是新平台软件开发的一个项目。
GCC(GNU CC Compiler)由自由软件公司(GNU)提供源码,是一个成功的支持多种高级语言和多种机器平台的编译系统。它的前端支持C、C++、Objective C等高级语言(据GCC V2.6.0称,对ADA、PASCAL等语言的支持正在开发中),后端支持多种平台,包括34家公司(如APOLLO、CONVEX、DEC、HP、IBM、MIPS、MOTOROLA、SGI、SONY、SUN)的29种CPU(如alpha、i486、i960、m68000、mips、rs6000、sparc、vax)上的53种系统(如genix、iris、osf、sco、sunos、sysv、ultrix、xenix、elf、bsd、netbsd、vms、newsos)的不同版本。分析GCC代码,总结其设计和实现的思想和方法,是基于GCC开发前/后端新功能的前提,也是研究如何使新平台软/硬平台高性能地接口的内容。
本文着重提出作者在分析GCC源码基础上总结出的关于它如何支持多平台的设计思想和实现方法,这是一个从产品研究到理论抽象的过程,因此只能尽可能地“自圆其说”。研究对象是gcc-2.6.0(1994年推出。1995年GNU已推出gcc-2.7.2)。课题前导知识包括:(UNIX)工作站工具的使用,RISC优化编译技术现状,和编译技术现状。以下文字中,“平台”指:
“ 系统支持 + 目标机 ”。
......


  目录

目 录
前 言 8
1 理论总结 9
1.1 编译系统现状 9
1.1.1 编译系统的设计 9
1.1.1.1 编译结构 9
1.1.1.2 开发工具 9
1.1.1.3 编译技术的应用 10
1.1.1.4 编译系统的研究重点 10
1.1.1.5 书写编译系统的语言 10
1.1.1.6 编译系统的中间语言 11
1.1.1.7 RISC体系结构的编译特点 11
1.1.2 编译程序的自动生成 12
1.1.2.1 编译程序生成器的作用 13
1.1.2.2 编译程序生成器的元语言 13
1.1.2.3 编译程序生成器的结构 14
1.1.2.4 词法分析程序的自动生成 14
1.1.2.5 语法分析程序的自动生成 16
1.1.2.6 语义分析程序生成器 17
1.1.2.7 代码生成程序的自动生成 18
1.1.3 编译后端技术介绍 19
1.1.3.1 中间代码的优化 19
1.1.3.2 局部优化策略 20
1.1.3.3 循环优化策略 21
1.1.3.4 全局优化策略 21
1.1.3.5 高层优化 21
1.1.3.6 代码生成 22
1.1.3.7 代码生成的信息表示 23
1.1.3.8 寄存器分配 23
1.1.3.9 窥孔优化策略 24
1.2 GCC支持多平台的实现 25
1.2.1 GCC支持多平台的关键 25
1.2.2 GCC的系统特色 25
1.2.2.1 作为软件系统的特点 25
1.2.2.2 GCC的软件重用 25
1.2.2.3 GCC的可扩性 26
1.2.3 描述语言RTL(Register Transfer Language) 26
1.2.3.1 RTL的语法 26
1.2.3.2 RTL的特点 27
1.2.3.3 RTL的作用 27
1.2.3.4 GCC编译的信息转换过程 27
1.2.4 三类编译结构 28
1.2.4.1 特定于平台的编译结构(编译结构Ⅰ) 28
1.2.4.2 可重定义目标机的编译结构(编译结构Ⅱ) 29
1.2.4.3 GCC的编译结构(编译结构Ⅲ) 29
1.2.4.4 三种编译结构的比较 29
1.2.5 GCC支持多平台的分析 30
1.2.5.1 编译系统支持多平台的关键 30
1.2.5.2 选择平台 31
1.2.5.3 描述平台 31
1.2.5.4 描述抽象机 32
1.2.5.5 平台到抽象机的映射机制 32
1.2.5.6 参数代入 33
1.2.5.7 对平台描述的翻译 34
1.2.6 加入新平台的过程 34
2 代码分析 36
2.1 抽象机参数的定义 36
2.1.1 机器描述文件“md”及其编译器“gen*” 36
2.1.1.1 MD代码 36
2.1.1.2 “gen*”作用与特点 38
2.1.2 抽象机及其描述 41
2.1.2.1 标准指令 41
2.1.2.2 宏定义 44
2.2 抽象机参数的引用 46
2.2.1 RTL生成(RTL Generater) 46
2.2.2 寄存器扫描(Register Scan) 48
2.2.3 跳转优化(Jump Optimization) 48
2.2.4 删除公共子表达式(Common Subexpression Elimination) 48
2.2.5 循环优化(Loop optimization) 48
2.2.6 数据流分析(Data Flow Analysis) 48
2.2.7 指令合并(Instructions Combination) 49
2.2.8 指令调度(Instruction Scheduling) 49
2.2.9 局部寄存器分配(Local Register Allocation) 49
2.2.10 全局寄存器分配(Global Register Allocation) 49
2.2.11 硬件寄存器分配(Reloading) 49
2.2.12 延迟分支调度(Delay Branch Scheduing) 50
2.2.13 汇编输出(Assemble) 50
2.2.14 一些文件使用 50
3 平台设计 52
3.1 平台定义 52
3.1.1 存储器定义 52
3.1.2 源语言定义 52
3.1.3 寄存器定义 52
3.1.4 函数调用方式 52
......


  参考资料

[1] J.P.Bennett . 1990. Introduction to Compiling Techniques,McGraw-Hill Book Company (UK) Ltd.

[2] Lemone , K.A. 1992. Design of Compilers Techniques of
Programming Language Translation, CRC Press , Inc.

[3] Allen , Holub . 1990. Compiler Design in C , Prentice-Hall Intenational Editions.

[4] 陈火旺 钱家骅 .1983.编译原理.

[5] (美)W.M.Waite,(联邦德国)G.GOOS著, 陈涵生 等译 .1989.编译程序的构造,上海科学技术文献出版社.


  简单介绍

GCC是前端支持多种语言、后端支持多种平台的成功的编译系统。本文介绍现代编译系统的一些设计思想和实现方式,给出GCC支持多平台的理论总结和关键代码的分析,然后设计一个平台模型,以其代入的结果验证所总结的理论。
GCC兼顾国际潮流,在已有公认的标准软/硬平台上,高起点地表现自己的特色:软件重用和可扩性。GCC支持多平台的关键是:
1.描述能力强的RTL:作为优化处理的中间语言,抽象机的描述语言,目标机模型的描述语言,以及编译各遍卸出文件的输出语言;
2.特有的编译结构:将平台特性信息的描述与算法分离,通过映射机制将平台特性信息作用于各算法上,既共享算法,又兼顾平台特性的体现,而映射机制重在提供描述工具;
3.参数代入的映射机制:包括参数定义和参数操作,参数定义是一个表示问题,最迟在系统生成时即可完成,算法对参数操作时就实现了映射。
GCC的抽象机是一套标准名(参数),相当于一种协议:平台提供的功能,以实现语法树的操作语义;抽象机参数的核集:平台必须提供的功能,足以实现语法树的操作语义。
加入新平台的设计是参数选取的过程。参数定义时首先考虑参数核集,重点考虑关键参数。GCC使用RTL和C的宏来描述平台,实现后端描述/匹配过程的自动化。

查看评论 已有0位网友发表了看法
  • 验证码: