C语言子集编译系统的设计与实现开题报告
2020-04-10 16:02:49
1. 研究目的与意义(文献综述)
在计算机领域,技术的好坏无疑是决定一个人才优劣的核心要素,随着近年来计算机行业的快速发展,计算机专业的人才的批量涌现,专业人才之间的竞争也变得越来越激烈。一方面计算机相关的人才总量呈现出井喷式的增长,另一方面,掌握核心技术的能做系统软件开发的技术人员太少,人才需求很大。而随着企业的发展,设计系统和平台的需求不断增加,这种供需矛盾将越来越明显。
究其原因,很容易想到我们的本科教育及其课程设置。美国顶尖大学计算机系基础课程教学里都非常重视项目时间,操作系统往往要真的开发一个像模像样的操作系统原型,编译原理课程也需要自己设计并实现一种语言的编译器。
而在计算机科学的各门课程中,编译原理又或者说编译器的设计实践有着特殊的重要性。编译原理的“龙书”主要作者、哥伦比亚大学教授alfred v. aho 曾经列举过编译器的实践能够带来的诸多好处:首先,编译器的实践能让学生领悟到理论与实践的完美结合。比如编译原理所涵盖的正则表达式和自动机,在各种场合的应用是极其广泛的,对正则的掌握程度,从某种意义上讲甚至可以作为技术人员水平的一项尺度。其次,编译器的实践能够让学生深入探索计算思维的多样性。与人类语言一样,不容类型的编程语言其实代表了不同的思维方式。只用过命令式语言的人可能没有想到,开启了大数据领域的map与reduce,其实在函数式语言是一种非常常见的东西。
2. 研究的基本内容与方案
本毕业设计研究的基本内容是设计一个简单的c语言子集(sc语言)的编译系统(编译器),先后通过词法分析,语法分析,语义分析,代码生成等过程完成对sc语言的编译过程,而加深对本科阶段所学习的编译原理的理解。本次毕业设计的具体目标是将一个由sc语言编写的程序经过编译器转化为目标代码x86汇编语言进而生成可执行文件exe。
在具体毕业设计的进行过程中,我打算按照以下流程进行相关知识的学习和毕业设计的实施。
(1)c/c 编程能力的强化:本次毕业设计我将选用c/c 来作为毕业设计的主要编程语言,在编程过程中要求对编程语言的运用和掌握比较熟练,所以这对我的编程能力是一次不小的考验,所以需要针对进行强化。
3. 研究计划与安排
(1)2018年2月26日到2018年3月11日:编译原理知识以及intel x86汇编指令的熟悉和学习;
(2)2018年3月12号到2018年3月25日:c/c 编程能力的强化以及链接器的学习;
(3)2018年3月26日到2018年4月1日:开发环境的搭建,scc编译器架构的设计
4. 参考文献(12篇以上)
[1] 张素琴,吕映芝,蒋维杜,戴桂兰. 编译原理(第2版) [m]. 清华大学出版社. 2011
[2] 王亚刚. 深入分析gcc[m]. 机械工业出版社,2014,41(10):50-61
[3] keith d.cooper,linda torczon. 编译器设计(第二版)[m].人民邮电出版社,2013