编译课程设计报告模板.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE8

PAGE1

编译语言课程设计报告

专业

计算机科学与技术

学生姓名

班级

B计算机

学号

指导教师

完成日期

2010年X月

PAGE1

目录

TOC\o1-3\h\z\u1设计目的 1

2设计任务 1

3设计内容与要求 1

3.1问题描述 1

3.2程序要求 1

4程序设计说明 1

4.1设计流程图 2

5源程序清单 2

6小结 2

7参考文献 2

设计目的

学生在学习《编译原理》课程过程中,结合各章节的构造编译程序的基本理论,总共用一周时间完成课程设计。要求用C或C++语言描述及上机调试,实现五个题目中的任意一个。使学生将理论与实际应用结合起来,受到软件设计等开发过程的全面训练,从而提高学生软件开发的能力。了解基本块的DAG表示及其应用,掌握局部优化和循环优化的基本方法,对中间代码和目标代码进行等价交换,即实现中间代码优化和目标代码的优化。

设计任务

优化器包括局部优化和循环优化。编译程序在中间代码或目标代码生成之后要对生成的代码就行优化。

设计内容及要求

3.1问题描述

局部优化,是指基本块内的优化。所谓基本块,是指程序中一个顺序执行的语句序列,其实只有一个入口语句和一个出口语句。执行时只能从其入口语句进入,从其出口语句退出。对于一个给定的程序,我们可以把它划分为一系列的基本块。在各基本块的范围内分别进行优化。

循环优化:在找出了程序流图中的循环之后,我们就可以针对每个循环进行优化工作。因为循环内的指令是重复执行的,因而循环中进行的优化在整个优化工作中是非常重要的。循环优化的三种重要技术:代码外提,强度削弱和删除归纳变量。减少循环中的代码数目的一个重要办法就是代码外提。强度削弱和删除归纳变量的算法:(1)利用循环不变运算信息,找出循环中的所有基本归纳变量。(2)找出所有其他归纳变量a,并找出a与已知基本归纳变量x的同族线性函数关系Fa(x)。(3)对(2)中找出的每一归纳变量a进行强度削弱。(4)删除对归纳变量的无用赋值。(5)删除基本归纳变量。

总之,局部优化指的是在一个入口、一个出口的基本程序块上进行的优化,循环优化是对循环中的代码进行优化

3.2程序要求

局部优化:设计出划分基本块的算法,在每一个基本块中实现:合并已知量、删除多余运算和删除无用赋值三种局部优化。设计构造基本块的DGA图的算法,以及将DGA图还原实现基本快的优化算法。

循环优化:只做一重循环优化,完成代码外提,强度削弱和删除归纳变量等三种优化。要求实现while循环和for循环语句的优化。

程序设计说明

4.1设计流程图

局部优化:

DAG的结点类型只考虑0型、1型和2型,如下表所示。

类型

四元式

DAG结点

0型

(=,B,,A)

①A

B

1型

(op,B,,A)

op

B

2型

(op,B,C,A)

(=[],B,C,A)

(jrop,B,C,s)

③A③A③(s)

op=[]rop

①②①②①②

BCBCBC

5.源程序清单

由基本块构造DAG算法如下:

while(基本块中还有未处理过的四元式){

取下一个四元式Q;

newleft=newright=0;

if(getnode(B)==NULL){

makeleaf(B);

newleft=1;

}

switch(Q的类型){

case0:n=getnode(B);

insertidset(n,A);

break;

case1:if(isconsnode(B)){

p=calcons(Q.op,B);

if(newleft==1)/*getnode(B)是处理Q时新建结点*/

delnode(B);

if((n=getnode(p))==NULL){

makeleaf(p);

n=getnode(p);

}

}else{

if((n=findno

文档评论(0)

优秀文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档