登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 开题报告 > 计算机类 > 计算机科学与技术 > 正文

程序语言C--的编译器设计与实现开题报告

 2020-04-13 13:05:14  

1. 研究目的与意义(文献综述)

1.1题目:程序语言C--的编译器设计与实现
1.2背景及意义:
编译器是程序员使用的关键工具,必须生成高效的目标代码,但更重要的是,编译器必须生成正确的目标代码,只有可靠的编译器才能生成可靠的应用程序[2]。编译器本身是一个大而复杂的应用程序。编译器构造原理和技术可以说是计算机科学理论与实践相结合的最好典范。

实现一个编译器,可以学习到编译的一些知识,如词法分析、语法分析、代码生成等,还能清晰地了解程序的运行逻辑,例如变量定义、函数调用、参数传递、内存分配等。因为编译器是一个比较复杂的程序,在实现编译器的过程中,需要设计程序模块、设计符号表、设计运行栈、设计中间代码等,并将它们组合在一起,是非常考验系统设计能力的,对编程能力的提升也是十分巨大的。


1.3国内外研究现状:
上世纪50年代,IBM的John Backus带领了一个研究小组对FORTRAN语言及其编译器进行开发。由于当时人们对编译理论的了解不多,开发编译器既复杂又艰苦。与此同时Noam Chomsky也开始他对自然语言结构的研究。Chomsky研究出根据语言文法的难易程度以及识别它们所需的算法来对语言分类,即Chomsky架构。它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法。其中2型文法(上下文无关文法)被证明是程序设计语言中最有用的。解析问题(用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善地解决了这个问题,现在它已是编译原理中的一个标准部分。人们接着又深入研究有效生成目标代码的方法,人们通常称为优化技术,并被一直使用至今。
因为编译器作为基础软件,历史十分悠久,很多人都在研究,所以编译器的很多技术已经相当成熟。例如主流的三大C/C 编译器:GCC、Clang、cl,词法分析器生成程序Lex、Flex,语法分析器生成程序Bison、Yacc,编译器基础设施框架LLVM等。
GCC(GUN Compiler Collection),一套由GNU开发的编程语言编译器,它是一套以GPL及LGPL许可证发布的自由软件,现已被大多数操作系统采纳为标准的编译器。GCC 6.0提供了很多新的特性,如OpenMP 4.5、段寄存器支持、目标克隆、扩展存数规则等,完全支持C 14,并支持C 17的实验功能。
LLVM这个名字源于Lower Level Virtual Machine,但这个项目并不局限于创建一个虚拟机,它已经发展成为当今炙手可热的编译器基础框架[4]。LLVM最初以C/C 为编译目标,近年来经过众多机构和开源社区的努力,LLVM已经能够为ActionScript、D、Fortran、Haskell、Java、Objective-C、Swift、Python、Ruby、Rust、Scala等众多语言提供编译支持,而一些新兴语言则直接采用了LLVM作为后端。可以说,LLVM对编译器领域的发展起到了举足轻重的作用。
Lex是一个词法分析器生成器,yacc是一个语法分析器生成器,它们结合使用可以完成编译器前端的大部分工作,生成的LLVM IR由LLVM进行代码优化、机器码生成等,为实现编程语言提供了方便,避免了很多重复的工作。

2. 研究的基本内容与方案

2.1 基本内容

毕设主要研究设计和实现编译程序的相关技术和方法,主要内容为:

(1)研究词法分析中使用的几种技术,如基于表驱动的词法分析技术,以及硬编码方式的词法分析技术。

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

3. 研究计划与安排

(1) 2018/1/21—2018/2/26:查阅参考文献并写文献摘要,翻译英文资料。


(2) 2018/2/26—2018/3/1:分析选题、确定技术路线,完成开题报告。


(3) 2018/3/1—2018/3/20:进一步阅读文献,并进行系统分析。

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

4. 参考文献(12篇以上)

[1] Alfred V.Aho,Monica S.Lam,Ravi Sethi,Jeffrey D.Ullman.赵建华,郑滔,戴新宇.编译原理[M].北京:机械工业出版社,2009.1.
[2] Christopher W.Fraser,David R.Hanson.王挺,黄春,等.可变目标C编译器:设计与实现[M].北京:机械工业出版社,2016.11.
[3] Dick Grune,Ceriel J.H.Jacobs.Parsing Techniques: A Practicla Guide[M].New York:Springer-Verlag,2008.
[4] Mayur Pandey.LLVM Cookbook[M].Birmingham:Packt Publishing,2015.5.
[5] 范志东,张琼声.自己动手构造编译系统:编译、汇编与连接[M].北京:机械工业出版社,2016.8.
[6] 王博俊,张宇.自己动手写编译器、链接器[M].北京:清华大学出版社,2015.2.
[7] Stanley B.Lippman.侯捷.深度探索C 对象模型[M].北京:电子工业出版社,2012.1.
[8] Bryant,Radal E.Computer Systems: A Programmer’s Perspective[M].London: Pearson,2015.6.
[9] 王爽.汇编语言[M].北京:清华大学出版社,2013.9.
[10] Scott Meyers.Effective Modern C [M].南京:东南大学出版社,2015.9.
[11] Scott Meyers.Effective C [M].北京:电子工业出版社,2011.1.
[12] Nicolai M.Josuttis.C 标准库[M].北京:电子工业出版社,2012.9.
[13] Stanley B.Lippman,Josee Lajoie,Barbara E.Moo.C Primer[M].北京:电子工业出版社,2013.9.
[14] Brian W.Kernighan,Dennis M.Ritchi.徐宝文,李志.C程序设计语言[M].北京:机械工业出版社,2004.1.
[15] Mark Allen Weiss.风舜玺.数据结构与算法:C语言描述[M].北京:机械工业出版社,2004.1.
[16] Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein.算法导论[M].北京:机械工业出版社,2013.1.


剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图