研究生院第一分析.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 数组越界的检查,类型的安全性,效率是一个大问题 * * * * * * 这是目前编译系统开发的主要方式 * * * * 特别强调的是:编译系统的目标平台特点在很大程度上决定了编译优化的策略,而典型应用也是必须考虑的问题,在并行编译系统中尤其如此。 * 编译程序的自举与移植(1) T形图: 描述源语言S、目标语言T和编译程序实现语言I间的关系 T形图的组合方式: 将第一个T形图的输出作为第二个T形图的输入 已有将语言A编译为语言B的编译器和将语言B到语言C的编译器,用上述方法得到得到A到C的编译器 编译程序的自举与移植(2) 编译器实现语言的变换 例如我们用C语言开发了一个将FORTRAN语言程序编译为JAVA程序的编译器FOR2J,如果我们已经有一个将C语言编译为X86代码的编译器,利用上述的方式可以得到一个在X86机器上执行的FOR2J编译器 编译程序的自举与移植(3) 编译器的自举(bootstrapping)的开发方式 没有高级语言可以用来写编译器,怎么办? 用汇编语言开发一个完整的编译器?太繁琐 用自举的方式: 首先用汇编语言开发一个实现源语言一个子集的编译器,这个编译器只要正确即可 用这个子集语言开发语言全集的编译器 上述过程可以重复多次,直至得到性能良好的、正确的对语言全集有效的编译器 编译程序的自举与移植(4) 编译器的移植的开发方式 以PC机为工具开发MIPS芯片的C语言编译器 PC机上已有C语言编译器 用C语言在PC机上开发一个产生MIPS代码的C编译器C1 将C1在PC机上编译,得到PC机上运行的交叉编译器 用交叉编译器在PC机上对C1重新编译,得到在MIPS上运行的C语言编译器 编译程序的自举与移植(5) 编译程序的开发 熟悉三方面的语言: 描述源语言S、目标语言T和编译程序实现语言I 中间表示的设计: 与上述三方面语言的特性密切相关 与编译的各个阶段的算法结合很紧密 由于操作对象的不同,中间表示可能分为多层 各个阶段内容的选择、算法的设计及权衡 开发环境 进度管理 文档的设计与管理,程序开发的规范 版本管理 调试:正确性、性能 质量控制 习题 将高级语言编写的程序进行翻译执行的主要方式有哪些?它们的区别? 复习语法树和分析树的概念,比较异同点。在编译系统中常用的抽象语法树(AST)填加了各种注释,这样做的目的何在?在构造好一个语法树后,它会发生变化吗?原因。 一个完整的编译器一定要包含我们介绍的六个阶段吗?含有优化部分的编译程序执行效率高,对吗?分析原因。 有的编译器在报错时,先给出语法错误,再给出语义错误;有的编译器是将语法错误和语义错误混合给出,造成上述区别的可能原因? 一个编译器可以是多遍扫描的,也可以是一遍扫描的,二者在编译质量上有差别吗?采用多遍扫描或一遍扫描的主要原因是什么? 结合一个C程序,从预处理程序开始,到用Loader程序将目标程序装入机器执行,中间涉及到那些程序,各自的功能 * 助教: * Such as GCC and Pro64. * * * * * 这种等价变换,也是弥补二者间的鸿沟 1。算法与硬件是有区别的,算法考虑问题本身 2。硬件的特点千差万别 3。编译器的好坏是多方面的:性能、适用性、健壮性。。。 等价变换相关的例子:浮点精度、多线程数据竞争 * 编译器的编写需要考虑使用到的程序设计语言、编译器接收的语言、目标机的体系结构、语言理论、算法、软件工程等多方面的问题 * * * * * 分析树比较冗余,这棵树有17个结点 * * * * 譬如指针分析 * * * * * 符号表甚至在程序的运行时刻都有用,如程序的调试时 * * 一般,我们将语法树、带注释的语法树、中间代码、符号表等统称为中间表示(IR),中间代码可以是分层的,主要是为了适合编译的不同阶段的需要 * 在有些编译系统中,中端是一个重要的阶段 * 编译程序高级教程 Compilers: An Advanced Course 冯晓兵 E-mail: fxb@ict.ac.cn 中国科学院计算技术研究所 计算机体系结构国家重点实验室 编译与编程实验室 复杂的系统工程:现代高性能并行计算机在体系设计中采用了多层次并行、多级分布存储等复杂结构,加大了开发高质量并行软件的难度。影响先进计算机性能的三个主要因素是:算法、编译程序和硬件体系结构,必须体系结构、硬件、系统软件/编程环境及算法、应用等领域有机结合、合理分配复杂性,才能获得高计算性能。 课程内容:本课程介绍了编译程序的基本构造原理和基本实现技术,主要内容包括形式语言基础知识、词法分析、语法分析及语法制导翻译、流分析、程序优化、代码生成等编译理论和技术。 课程目标:现代芯片体系结构的设计和适应这种体系结构的高性能编译程

文档评论(0)

四月 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档