西安理工大学《编译原理》编译原理作业集-第十章.docVIP

西安理工大学《编译原理》编译原理作业集-第十章.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 优化 本章要点 优化概述局部优化基本块的DAG表示及其应用控制流分析和循环查找算法,到达定值与引用定值链,循环优化。 本章目标 考核学生对优化概述,局部优化,基本块的DAG表示及其应用,控制流分析和循环查找算法,到达定值与引用定值链,循环优化等内容的理解和掌握。 本章重点 1.对各类优化的理解,包括常量合并、公共子表达式删除、复写传播、死代码删除、循环优化(代码外提、归纳变量删除、强度削弱)等。 2.控制流分析:掌握建立程序流图的算法和流图中自然循环的识别算法。 本章难点 2. 循环优化; 作业题 一、单项选择题: 在对编译程序产生的中间代码进行优化时,就实施优化的范围来说,分 A 优化和 B 优化。循环优化属于 B 优化,它对于提高目标代码的运行速度是非常有效的。循环优化主要采用的三项优化措施是 C 、 D 、 E 。 二、多项选择题: 1. 2. 在编译程序采用的优化方法中,是在循环语句范围内进行的。 a. 合并已知常量;b. 删除多余运算;c. 删除归纳变量;d. 强度削弱;e. 代码外提; 3. 一下代码可进行哪些优化? a. 合并已知常量;b. 删除多余运算;c. 删除归纳变量;d. 强度削弱;e. 代码外提; 4. 四元式程序中各个基本块的入口语句是________。 a. 程序第一个语句;b. 能由条件转移语句或无条件转移语句转移到的语句; c. 紧跟在条件转移语句后面的语句;d. 调用语句; 三、填空题: 四、判断题: ( ) ( )五、名词解释: 1.; 六、简答题: 1. 2. 在循环优化中,为什么要代码外提?试说明在哪些情况下可以外提? 3. 如何理解有些程序优化后质量反而下降? 4. 有一C语言程序如下: 1 main( ) 2 { int x; 3 x=25; 4 print(“%d\n”, x); 5 } 经过编译连接后,由符号调试器跟踪其执行,却无法检查变量x的值,因为调试器报告“无此变量”。试解释其原因。 七、应用题: 1. 试构造下面的程序的流图,并找出其中所有回边及循环。read P x := 1 c := P * P if c 100 goto L1 B := P * P x := x + 1 B := B + x write x halt L1: B:= 10 x := x + 2 B := B + x write B if B 100 goto L2 halt L2: x := x + 1 goto L1 2. 对本题中所示的流图,求出其各结点n的控制结点集D(n)、回边及循环(n0为首结点)。 考虑下面求矩阵A、B成绩的程序片段: BEGIN FOR i := 1 TO n DO FOR j := 1 TO n DO FOR k = 1 TO n DO c[i, j] := c[i, j] + A[i, k} * B[k, j] END (1)假定对数组A、B、C采用静态存储分配,每个字占用4个字节,存储器以字节为单位编址。给出该程序的三地址代码序列。(2)构造该程序相应的流图。(3)删除流图中各基本块内的公共子表达式(4)指出流图中所有回边及其相应循环,并且进行循环优化。试求出如下四元式程序中的循环并进行循环优化I := 1 read J, K L: A := K * I B := J * I C := A * B write C I := I + 1 if I 100 goto L halt 5. 下面是应用筛法求2到N之间素数的程序:begin read N; for i := 2 to N do A[i] := true; /*置初值*/for i := 2 to N**0.5 do /*运算符**代表幂乘*/if A[i] then /*i是一个素数*/for j := 2 * i to N by i do A[j] := false /*j可被i除尽*/end (1)试写出其四元式中间代码,假设对数组A用静态分配存储单元,且下届为0;(2)作出流图并求出其中的循环;(3)进行代码外提;(4)进行强度削弱和删除归纳变量; 对下面的程序片段作出其程序流图并计算:(1)各基本块的到达_定值集IN[B];(2)各基本块中各变量引用点的ud链;(3)各基本块出口的活跃变量集V_OUT[B];(4)各基本块中变量定值点的du链。N := 0 L1: I := 2 L2: if I N goto L4 write N L3: N := N+1 goto L1 L4: J := N/I if J = 0 goto L3 I := I=1 goto L2 7. 设有如下的基本块: T1:=A+B T2

文档评论(0)

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

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

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档