打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于GCC开发C编译器的研究与实践
《浙江大学》 2003年
基于GCC开发C编译器的研究与实践
朱少波
【摘要】:编译系统是任何计算机系统中不可缺少的重要部分。但是编译系统的研制因其技术复杂、难度较高而需要投入较多的人力、物力和花费较长的研制周期。过去编译系统的研制均是针对某一种程序设计语言和某一种目标机而专门编写的。随着计算机的飞速发展,这种传统的方法已经很难满足需要。进入八十年代后期,随着国外各种软件公司的兴起以及各种计算机芯片不断推陈出新,研制支持多目标机的编译系统越来越显得重要,编译程序的开发者们认识到只有既支持多语种又支持多目标机的编译系统才具有生命力和竞争价值。这种系统实际上是开发编译程序的基础平台,它采用的技术代表着编译技术的发展方向。GNU CC是这种支持多语种、多目标机编译系统中最有代表性的一个系统。它目前已支持的语言有C、C++、Objective C、FORTRAN、ADA;已移植的平台有一百多种,涉及三十多种处理机,六十多种系统。GNU CC之所以有如此广泛的移植和使用,其原因除了它的源代码公开之外,更重要的原因应归于其独特的结构。其清晰的前端语法树结构、高度概括的抽象机中间语言、简洁有力的后端机器描述等三部分为快速实现多语种开发、多平台移植提供了有力的支持。目前,浙江大学信息与通信工程研究所正在进行32位多媒体数字信号处理器(命名为MD-32) 的软硬件开发。由于GNU CC的这种优点,我们选择它对新目标机进行移植。本文作为前导性的尝试,提出一个简单的处理器模型subDLX,通过对subDLX目标机重写机器描述,实现了GCC的成功移植。为以后实现对MD-32移植GCC打下来了基础。在实践过程中我们发现,GCC看似庞大复杂,其实内部结构清晰,技术成熟,它不仅可用来作为开发新语言编译程序或移植至新目标机的基础,同时还可以用于进行新编译技术,如面向新体系结构的优化技术研究与实验。此外,我们借助GCC编译过程中产生的中间代码RTL(Register Transfer Language)文件,重写目标代码生成和优化功能程序,为新的目标机器开发C语言编译器。这个方法不要求程序员精通GCC,能够快速的进入编译器的开发,缩短项目开发周期,理论上可以得到一个更高效的编译器。
【关键词】:
【学位授予单位】:浙江大学
【学位级别】:硕士
【学位授予年份】:2003
【分类号】:TP311.52
【目录】: 中文摘要2-3
英文摘要3-4
致谢4-7
第一章 绪论7-21
1. 1 为什么要用编译器7-8
1. 2 与编译器相关的程序8-10
1. 3 翻译步骤10-14
1. 4 编译器中的主要数据结构14-15
1. 5 编译器结构中的其他问题15-17
1. 6 自举与移植17-21
第二章 GCC编译器21-35
2. 1 GCC简介21-22
2. 1. 1 GNUC的起源与发展21
2. 1. 2 GCC的步骤21-22
2. 2 词法分析和语法分析22-28
2. 2. 1 GCC词法分析程序的主要功能22
2. 2. 2 词法分析程序的流程图及其说明22-24
2. 2. 3 GCC语法和语义分析程序的主要功能24-26
2. 2. 4 语法和语义分析程序的流程图及其说明26-28
2. 3 中间代码产生28-32
2. 3. 1 GCC的中间语言28-30
2. 3. 2 RTL中间代码的生成30-31
2. 3. 3 为控制语句产生RTL代码31-32
2. 4 编译优化32-33
2. 4. 1 基于RTL的优化32-33
2. 4. 2 寄存器分配33
2. 5 汇编代码生成33-35
第三章 为subDLX模型移植GCC35-59
3. 1 技术背景35-36
3. 2 编译器设计36-40
3. 2. 1 为什么选择GCC36-37
3. 2. 2 GCC的设计思想37-38
3. 2. 3 GCC的系统结构与流程38-40
3. 3 虚拟处理器(subDLX)模型40-42
3. 3. 1 subDLX的寄存器40
3. 3. 2 subDLX的数据类型40
3. 3. 3 subDLX的寻址模式40-41
3. 3. 4 subDLX的指令集41-42
3. 4 目标机(subDLX)描述宏42-47
3. 4. 1 subDLX的存储格式43-44
3. 4. 2 subDLX的寄存器使用44-45
3. 4. 3 subDLX栈的布局45-46
3. 4. 4 subDLX函数的入口、出口及调用约定46
3. 4. 5 给subDLX汇编输出分区46-47
3. 5 虚拟处理器(subDLX)的机器描述47-51
3. 6 机器描述与编译之间的接口51-57
3. 7 本章小结57-59
第四章 基于GCC RTL中间代码,为特定DSP设计C编译器59-70
4. 1 RTL中间语言59-62
4. 1. 1 标准RTL语句--INSN59-60
4. 1. 2 RTL基本元素--rtx60-61
4. 1. 3 RTL操作码简介61
4. 1. 4 RTL机器模式61-62
4. 2 基于RTL中间代码,为特定DSP设计C编译器结构简介62-63
4. 3 基于RTL中间语言的汇编代码生成63-69
4. 3. 1 代码生成方法63-64
4. 3. 2 代码生成和优化器结构64-65
4. 3. 3 RTL语句展开65
4. 3. 4 RTL操作数结构分析65-68
4. 3. 5 RTL基本指令提取68
4. 3. 6 从RTL行为级描述到汇编代码输出68-69
4. 4 本章小结69-70
全文总结70-71
参考文献71-73
作者攻读硕士学位期间发表或合作发表的论文73
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GCC 的编译流程及中间表示层 RTL 的初步探索
计算机识别人类的语音需要靠编译器,编译器是怎么做的呢?
不同版本编译器兼容的问题
S3C2440重新编译内核及移植QT4.7.3
什么是交叉编译
Linux下C开发环境的构成和安装
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服