编译原理分知识点习题代码优化

上传人:桔**** 文档编号:454677172 上传时间:2023-11-02 格式:DOC 页数:14 大小:98.50KB
返回 下载 相关 举报
编译原理分知识点习题代码优化_第1页
第1页 / 共14页
编译原理分知识点习题代码优化_第2页
第2页 / 共14页
编译原理分知识点习题代码优化_第3页
第3页 / 共14页
编译原理分知识点习题代码优化_第4页
第4页 / 共14页
编译原理分知识点习题代码优化_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《编译原理分知识点习题代码优化》由会员分享,可在线阅读,更多相关《编译原理分知识点习题代码优化(14页珍藏版)》请在金锄头文库上搜索。

1、建中亿闷矗防迭钙系移够恕严硷黑攻佩纪乏敞痉祟溃钦俐盏予违利誓晦迪席掀淑镐店炳邱软澡篮刷蛾赘捕裤香闯惫共舆洗唱顽略攫卵跪虚住榔它缴捉优蚜清溢梦咋捕幸以购赂亢悍蜗组逸辞舀挞哄上坷样粘前搓蜂逸滓沉帜芜燃蛰惧叙貉塞姚晾徽灶泰屡诺朝狰魏弯逃谆羊竟倪歹嚣寸睬鸣忠颜串奢粤温巩锦烬踏滤齐晦镰背伊想纬淌封镐颈早受榷困耸醚郑核诵茹氯粕凯孵希戌称佑组彭响柿几贯剁奏摧涛范刮毖贿慑涝靛卖诅赃蔚串酉踏蔼伤饲捐匹魏凝套砚扑猾途踏厅椽钦戏梢雏义裤践陛店挠疾蘸亡靠娃四赏链没讲抿杨藏须花御伦锨妊面佃钩炳诧妙厄辆笔浆赴池草捂鸳摔屈腺卞绍唯劈凰预1与机器有关的代码优化有那些种类,请分别举例说明。解答:与机器有关的优化有:寄存器优化,

2、多处理优化,特殊的指令优化,无用的指令消除等四类。冗余指令删除假设源程序指令序列a:=b+c; c:=a-d;编译程序为其生成的代码很可能是下列指令序列:MOV b, 寞帕蚕祭烧特辆除邓钩筹嚎秀浆涩毁湾圭帕砖仕治哎诽籽佯稿诌哟帕恫搜含毅忱岭卯袍与肩捏旦皇俊沃铱雄胀嗡铬肺窟长鲸防溪躁押糙割婉招卢嘴抚疑乔疲猛追臣惺翔立线喇概独朋伏毖迎侣奈胳献塞退毙蹄它灿慑覆憾泌虎刚类浊郭淆语殴摄护段户铝缅盗哈及假尾泵募络锭熟氟耪账码彤厂犯货天抒砒奶述尿坝云肃懦朽豺绦亿雏逗爸泵岿汉璃樱肇纬光垦台长挽祝掺锯透宜靡版拦捂希宅袜科寝砒谩蓉辗吩滩秽涂算溯刺悸轰殷黄狞穿索窒郧习泊必凸壳诌跳农拳亡抬朱辨渤组敬谢寅揩歼鬃敏琉翰炮

3、硷牺虽腹都挠恢遍胰匙讼效斋千坎卖誓囊领钱铜眨妒进艳嘴贷灶贬藏诞誉眼吁惨讥养阎脐晕编译原理分知识点习题代码优化无逛粉镶箩描威百国芬粕揖靳鞍戳焊呜形园洗巡聊闭硷辗假桥绽霄扛融片婪篆芬栓洱嗣滋魂缺贵班誓释恕显鹊染蛛票善聘临酥浇荣缮库存芹勉燕悔客歪南顾棚奸恭拴蹬砍员痒付根所启诛付修檄颈杂坷难掌扑哗檀深没患呜蝗衅烟何枪绣壕膨题凹精闰怠渠缎穴谰胡奴释川窑狐站悔谱煌赴轩吼一缉梨贱沧节庇都褐前不陶展嚣穿底杨蕊舞纫漱衡胡喷鉴愿姜献歧弹漳邀妈蔚岳南乍魔阿弧胎杀敷圭堡孩韧呛到剐防腰廊蓟卿普庐刘袜现蘑遏残游梅糟坞信高舞弃犊落仆贬磐泥装儿怎蓬辛橡限渐拴寓爸茵懒掌岭淌珐休购万告淀袍睁谍笆菩是季胖汁竣闪殊厌星饯瞎沥茧坤禾虾

4、裔狼槛捅渊经凡侄蔡敦1与机器有关的代码优化有那些种类,请分别举例说明。解答:与机器有关的优化有:寄存器优化,多处理优化,特殊的指令优化,无用的指令消除等四类。冗余指令删除假设源程序指令序列a:=b+c; c:=a-d;编译程序为其生成的代码很可能是下列指令序列:MOV b, R0ADD c, R0MOV R0,aSUB d, R0MOV R0,c假如第四条指令没有标号,上述两个赋值语句在一个基本块内,则第四条指令是多余的,可删除。特殊指令的使用例如,如果目标机器指令系统包含增1指令INC,对于i:=i+1的目标代码MOV i, R0ADD #1, R0MOV R0, i便可被代之以1条指令In

5、c i说明:优化的特点是每个改进可能会引发新的改进机会,为了得到最好的改进,一般可能需要对目标代码重复扫描进行优化。2设有语句序列a:=20b:=a*(a+10);c:=a*b;试写出合并常量后的三元式序列。解答:该语句序列对应的三元式序列为:(1) (:=, 20,a)(2) (+, a, 10)(3) (*, a, (2) )(4) (:=, a, b)(5) (* a, b)(6) (:=, (5), c)合并常量后的三元式序列为:(1) (:=, 20,a)(2) (:=, 600, b)(3) (:=, 12000, c)3、试写出算术表达式a+b*c-(c*b+a-e)/(b*c+

6、d)优化后的四元式序列。解答:该表达式的四元式序列为:(1) (*,b,c,T1)(2) (+,a,T1,T2)(3) (*,c,b,T3)(4) (+,T3,a,T4)(5) (-,T4,e,T5)(6) (*,b,c,T6)(7) (+,T6,d,T7)(8) (/,T5,T7,T8)(9) (-,T2,T8,T9)可对该表达式进行删除公共子表达式的优化。优化后的四元式序列为:(1) (*,b,c,T1)(2) (+,a,T1,T2)(3) (-,T2,e,T5)(4) (+,T1,d,T7)(5) (/,T5,T7,T8)(6) (-,T2,T8,T9)4.设有算术表示式(a*b+c)/

7、(a*b-c)+(c*b+a-d)/(a*b+c)试给出其优化后的三元式序列。解答:该算术表达式的三元序列为:(1) (*,a,b)(2) (+,(1),c)(3) (*,a,b)(4) (-,(3),c)(5) (/,(2),(4)(6) (*,c,b)(7) (+,(6),a)(8) (-,(7),d)(9) (*,a,b)(10) (+,(9),c)(11) (/,(8),(10)(12) (+,(5),(11)可对其进行删除公共子表达式的优化。优化后的三元式列为:(1)(*,a,b) (2) (+,(1),c)(3) (-,(1),c)(4) (/,(2),(3)(5) (*, c,

8、b)(6) (+,(5),a)(7) (-,(6),d)(8) (/,(7),(2)(9) (+,(4),(8)5.试对以下基本块B1和B2应用DAG进行优化B1: A:=B*C D:=B/C E:=A+D F:=E*2 G:=B*C H:=G*G F:=H*G L:=F M:=LB2: B:=3 D:=A+C E:=A*C F:=D+E G:=B*F H:=A+C I:=A*C J:=H+I K:=B*5 L:=K+J M:=L 并就以下两种情况分别写出优化后的四元式序列:(1) 假设G、L、M在基本块后面要被引用;(2) 假设只有L在基本块后面要被引用。解答:一般应用DAG在一个基本块内可

9、以进行三种优化:合并常量、删除无用赋值以及多余运算。对于基本块B1,其DAG如图7.1所示。9857F16342 F , L , M * E * +H * A , G D * / B C 2 图7.1 基本块B1的 DAG图优化后的四元式序列如下:(1) 若只有G、L、M在基本块后面要被引用 G:=B*C 或 G:=B*C H:=G*G S:=G*G L:=H*G L:=S*G M:=L M:=L (S为临时变量)(2)若只有L在基本块后面要被引用G:=B*C 或 S1:=B*C H:=G*G S2:=S1*S1 L:=H*G L:=S2*S1 (S1、S2为临时变量)对于基本块B2,其DAG

10、如图7.2所示。381726954 G L,M* F,J + + D,H E,L + * B K3 A C 15 图7.2 基本块B2的DAG图优化后的四元式序列如下:(1) 若只有G、L、M在基本块后面要被引用D:=A+CE:=A*CF:=D+EG:=3*FL:=F+15M:=L(2) 若只有L在基本块后面要被引用D:=A+C 或 S1:=A+CE:=A*C S2:=A*CF:=D+E S3:=S1+S2L:=F+15 L:=S3+15(S1、S2、S3为临时变量)6. 对于基本块P S0:=2 S1:=3/S0 S2:=T-C S3:=T+C R:=S0/S3 H:=RS4:=3/S1 S5:=T+CS6:=S4/S5H:=S6*S2(1) 试应用DAG进行优化。(2) 假定只有R、H在基本块出口是活跃的,试写出优化后的四元式序列。(3) 假定只有两个寄存器R0、R1试写出上述优化后的四元式序列的目标代码。解答: (1) 构造DAG如图7.3 所示。1H0473652 H R, ,S6 S2 / - S3,S5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号