C语言编译系统的研究与实现
发布时间:2023-03-04 19:44
相比于其他自然科学,计算机科学算是较新的科学体系,还有很多技术领域有待学者进一步探索。编译技术是系统软件的设计学科,作为计算机技术发展的基石,学习编译器设计的目的不仅在于其本身的理论和技术,其解决问题的思路与方法更值得学者学习借鉴。本文基于C++编程语言采用面向对象的思想,系统的实现了一个C语言编译器MiniC,并结合MiniC的源代码,从前端和后端两个角度出发,详细介绍了编译器各个模块数据结构和算法框架的设计实现。论文的研究工作主要体现在如下几个方面:前端部分实现包括词法分析、语法分析及与语义分析。词法分析部分采用有穷状态自动机进行单词识别,然后采用哈希表结构实现单词的插入与查找。采用语法制导翻译,在语法分析的过程中直接驱动语义分析,并采用栈式结构组织符号表,实现符号的存储及作用域管理。后端部分实现包括汇编与链接。汇编过程采用直接翻译方式将源语言翻译为机器指令,着重阐述了寄存器的分配算法、程序运行时的存储管理及目标文件生成。链接过程对符号进行分析及重定位,将符号引用与定义相关联,最终生成Windows系统下PE文件格式的可执行文件。错误管理贯穿整个编译系统,统计编译及链接过程中发生的...
【文章页数】:71 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
专用术语注释表
第一章 绪论
1.1 C语言简介
1.2 论文的研究背景及意义
1.3 国内外研究现状
1.4 主流C语言编译器
1.5 论文的主要工作及结构安排
第二章 编译系统设计原理概述
2.1 词法分析
2.1.1 正则表达式
2.1.2 有穷状态自动机
2.1.3 从正则表达式到有穷自动机的转换
2.1.4 单词识别
2.2 语法分析
2.2.1 上下文无关法
2.2.2 FIRST、FOLLOW集合
2.3 语义分析
2.3.1 语法制导翻译
2.3.2 符号表
2.4 汇编生成目标文件
2.5 链接生成可执行文件
2.5.1 PE文件格式
2.5.2 可选文件头
2.6 主流编译器及相关工具实现技术对比
2.7 本章小结
第三章 编译系统前端设计与实现
3.1 词法分析
3.1.1 分词算法框架
3.1.2 单词编码规则
3.1.3 DFA实现
3.1.4 单词表数据结构
3.1.5 哈希冲突解决方法
3.2 语法分析及语义分析
3.2.1 文法定义
3.2.2 类型信息
3.2.3 符号表设计实现
3.3 错误管理
3.4 模块间关系及类结构设计
3.5 本章小结
第四章 编译器后端设计与实现
4.1 目标机器
4.1.1 汇编指令
4.1.2 寄存器分配
4.2 运行时的存储管理
4.2.1 过程活动记录
4.2.2 栈式存储管理
4.3 生成目标文件
4.3.1 节数据存储
4.3.2 Obj文件生成
4.4 生成可执行文件
4.4.1 导入库文件
4.4.2 外部符号解析及重定位
4.5 模块间关系及类结构设计
4.6 本章小结
第五章 系统分析及测试
5.1 实验环境
5.2 系统分析
5.3 词法分析器功能测试
5.4 语法分析器功能测试
5.4.1 基本运算测试
5.4.2 语句测试
5.5 目标文件生成测试
5.6 可执行文件测试
5.7 错误管理测试
5.8 本章小结
第六章 总结与展望
6.1 总结
6.2 展望
参考文献
附录1 攻读硕士学位期间申请的专利
致谢
本文编号:3754886
【文章页数】:71 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
专用术语注释表
第一章 绪论
1.1 C语言简介
1.2 论文的研究背景及意义
1.3 国内外研究现状
1.4 主流C语言编译器
1.5 论文的主要工作及结构安排
第二章 编译系统设计原理概述
2.1 词法分析
2.1.1 正则表达式
2.1.2 有穷状态自动机
2.1.3 从正则表达式到有穷自动机的转换
2.1.4 单词识别
2.2 语法分析
2.2.1 上下文无关法
2.2.2 FIRST、FOLLOW集合
2.3 语义分析
2.3.1 语法制导翻译
2.3.2 符号表
2.4 汇编生成目标文件
2.5 链接生成可执行文件
2.5.1 PE文件格式
2.5.2 可选文件头
2.6 主流编译器及相关工具实现技术对比
2.7 本章小结
第三章 编译系统前端设计与实现
3.1 词法分析
3.1.1 分词算法框架
3.1.2 单词编码规则
3.1.3 DFA实现
3.1.4 单词表数据结构
3.1.5 哈希冲突解决方法
3.2 语法分析及语义分析
3.2.1 文法定义
3.2.2 类型信息
3.2.3 符号表设计实现
3.3 错误管理
3.4 模块间关系及类结构设计
3.5 本章小结
第四章 编译器后端设计与实现
4.1 目标机器
4.1.1 汇编指令
4.1.2 寄存器分配
4.2 运行时的存储管理
4.2.1 过程活动记录
4.2.2 栈式存储管理
4.3 生成目标文件
4.3.1 节数据存储
4.3.2 Obj文件生成
4.4 生成可执行文件
4.4.1 导入库文件
4.4.2 外部符号解析及重定位
4.5 模块间关系及类结构设计
4.6 本章小结
第五章 系统分析及测试
5.1 实验环境
5.2 系统分析
5.3 词法分析器功能测试
5.4 语法分析器功能测试
5.4.1 基本运算测试
5.4.2 语句测试
5.5 目标文件生成测试
5.6 可执行文件测试
5.7 错误管理测试
5.8 本章小结
第六章 总结与展望
6.1 总结
6.2 展望
参考文献
附录1 攻读硕士学位期间申请的专利
致谢
本文编号:3754886
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3754886.html