编译原理课程论文.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

编译原理课程论文--第1页

编译原理课程论文

09计本(3)班0904013028周幼新

一、编译原理概述

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原

理和基本方法。包括语言和文法、词法分析、语法分析、语法制导翻译、中间代

码生成、存储管理、代码优化和目标代码生成。

编译器将源程序编写的程序作为输入,从而产生用目标语言编写的等价程序

输出。通常地,源程序为高级语言,如C或C++,而目标语言则是目标机器的

目标代码(有时也称作机器代码),也就是写在计算机机器指令中的用于运行的

代码。这一过程可以表示为:源程序→编译器→目标程序。

二、编译原理的发展历程

20世纪40年代,由于冯·诺伊曼在存储程序在计算机方面的应用,编写一

串代码或程序保存在计算机中供计算机执行是十分方便的。起初这些程序都是用

机器语言编写的指令(只有0和1的程序),但编写这样的代码十分费时、困难

和乏味,从而产生用符号语言(汇编语言)编写的程序代替了。

在汇编语言中,都是以符号形式给出指令和存储地址的。汇编程序将用汇编

语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。汇编语言大大

提高了编程的速度和准确度。尤其在要求程序有极快的速度和极高的简洁程度时

更为重要。

汇编语言也有许多缺点:编写起来也不容易(比机器语言好多了),阅读和

理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写

的代码在应用于另一台计算机时必须完全重写。所以编程技术的下一个重要目的

就是以一个更类似于数学定义或自然语言的简洁形式来编写程序,编写后的程序

与任何机器都无关。

NoamChomsky通过对自然语言结构的研究,发现并最终使得编译器结构异

常简单,甚至还带有了一些自动化。Chosmky的研究根据语言文法(指定其结构

的规则)的难易程度以及识别它们所需的算法来为语言分类。与乔姆斯基分类结

构一样,包括了文法的4个层次:0型文法、1型文法、2型文法和3型文法,

编译原理课程论文--第1页

编译原理课程论文--第2页

且其中的每一个都是其前者的特例。其中2型文法(上下文无关文法)被证明是

程序设计语言中最有用的,今天它已代表着程序设计语言结构的标准方式。

现在编译器设计主要考虑到两点:1、编译器能够识别更为复杂的算法的应

用程序,用于推断或简化程序中的信息;这使得它与更为复杂的程序设计语言的

发展结合在一起。2、编译器越来越成为基于窗口的交互开发环境的一部分,它

包括了编辑器、链接程序、调试程序以及项目管理程序。

三、编译器的分析

编译器分析的对象是前端生成并传递过来的中间代码,优化型编译器常常用

好几种层次的中间代码来表示程序,高层的中间代码,接近输入的源代码的格式,

与输入语言相关,包含更多的全局性的信息,和源代码的结构;中层的中间代码

与输入语言无关,低层的中间代码与机器语言类似。不同的分析,优化发生在最

适合的那一层中间代码上。常见的编译分析有函数调用树,控制流程图,以及在

此基础上的变量定义-使用,使用-定义链,变量别名分析,指针分析,数据

依赖分析等等。上述的程序分析结果是编译器优化和程序变形的前提条件。常见

的优化和变新有:函数内嵌,无用代码删除,标准化循环结构,循环体展开,循

环体合并,分裂,数组填充等等。优化和变形的目标是减少代码的长度,提高

内存,缓存的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至

可以把序列化

文档评论(0)

175****1598 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档