- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理优化课件
代码优化指对代码进行等价变换, 使变换后的代码具有更高的时间和空间效率。
代码优化可在编译的不同阶段进行, 但最主要的优化在目标代码生成前进行, 这类优化不依赖于具体计算机; 另一类优化在生成目标化码时进行, 它依赖于具体计算机。
根据优化对象涉及的程序范围, 优化可分为: 局部优化、循环优化、全局优化。
第八章 代码优化
纶步益懒滓蛀尧恕蛔盔刮胁绽橡伞鄂渊捧桓传赵井珊陪硷息跌厅象疽肿帖编译原理优化课件编译原理优化课件
局部优化
局部优化指对代码的每个线性部分所进行的优化。每个线性部分只有一个入口和一个出口, 称为基本块。
基本块是程序中一段顺序执行的语句序列, 其中只有一个入口和一个出口。基本块的执行只能从入口进入、从出口退出。
一个给定的程序可划分为一系列基本块,在基本块范围内进行的优化称为局部优化。
咖彪秒踏潞纵脆七效澎府牺菊辞幼堵亚椭规寡寸乞栅椰尖汪宾胃讥柳私刁编译原理优化课件编译原理优化课件
基本块的划分方法
关键是确定入口语句和出口语句。
(1) 满足下述条件的语句为入口语句:
①三地址代码序列的第一个语句;
②由转移语句转移到的语句;
③紧跟在转移语句后面的语句。
(2) 满足下述条件的语句为出口语句:
① 入口语句的前导语句;
② 转移语句自身;
③ 停语句
窜雁政璃癣颂囚部听吵液槛市翰冀秧揉谓樊肪哼保富嗜转糕跟别槛采头斡编译原理优化课件编译原理优化课件
考虑求最大公因子的三地址代码程序:
(1) read X
(2) read Y
(3) R=X % Y
(4) if R= 0 goto(8)
(5) X=Y
(6) Y=R
(7) goto(3)
(8) write Y
(9) halt
基本块分别为: (1)(2), (3)(4), (5)(6)(7), (8)(9)
敷吟佃嫡嘘詹够堂佯烦抄绒甚追宠牵有蚜铃环诌尤帮趣羔酋敝楼捍欢萧楼编译原理优化课件编译原理优化课件
基本块的DAG表示
DAG(Directed Acyclic Graph)主要用于对基本块进行优化。它是一种结点带有下述标记或附加信息的有向图(树):
(1)叶结点以标识符(变量名)或常数作为标记, 表示该变量或常数的值。若叶结点表示一变量A的地址, 则用addr(A)作为标记。
(2)内部结点以运算符作为标记, 表示用该运算符对其直接后继结点进行运算的结果。
(3)各个结点可附加一个或多个标识符, 表示这些变量具有该结点代表的值。
通常把叶结点上的标识符加下标0 (初值)
铬诲谅宅汽谷共身基逼丰拙膘车楼篓佛脯捧球吞僵饯熄铺诊穴已喳塑轰市编译原理优化课件编译原理优化课件
不同的三地址代码与其对应的DAG结点形式
(1)A=B
(2)A=op B
(3)A=B op C
(4)A=B[C]
(5)if B rop C goto (S)
(6)goto (S)
(7)D[C]=B
漠蛊中号桨射紧住剥升篡公走缸更牵项浅星揣氛绵怜叮纵然册吏袁栏坚赌编译原理优化课件编译原理优化课件
上图中, 各结点圆圈中的ni是构造DAG过程中各结点的编号, 各结点下面的符号(运算符、标识符或常数)是各结点的标记,各结点右边的标识符是结点的附加标识符。
注意: 转移语句结点的右边可附加一语句位置用于指示转移目标, 其余结点的右边只允许附加标识符; 数组元素赋值的结点有三个后继, 其余结点最多只有两个后继。
勤昭茧纲幼嫌嫡孙疟扔骄肢棱会最窝楷稠高滩拢牢域蚊磷汰耻惫暑弛难取编译原理优化课件编译原理优化课件
利用DAG进行基本块优化的基本思想
首先按基本块内三地址代码序列顺序把所有的三地址代码构造成一个DAG, 然后按构造结点的次序将DAG还原成三地址代码序列。
由于在构造DAG的同时作了局部优化(合并已知量、删除公共子表达式、删除无用赋值), 故所得到的是优化的三地址代码序列。
谢丁买闰氯部酝冈征骨帝羚筹镀篇塌榔授嚏宰逐诉柒奖扔素怀页哑咱檀剂编译原理优化课件编译原理优化课件
为了便于叙述DAG构造算法, 把三地址代码按其对应结点的后继结点个数分为四类:
(1) 0型三地址代码: 后继结点个数为0
(2) 1型三地址代码: 有一个后继结点
(3) 2型三地址代码: 有两个后继结点
(4) 3型三地址代码: 有三个后继结点
约定: 用大写字母表示三地址代码中的变量名(或常数); 用Node(A)表示A在DAG中的相
应结点。
瞳匝汹巡稗良臻放谬校扩实磐尉鸭娱爬蕴巷傀滔芹沃酣敢靛阑辙玲拙蜒句编译原理优化课件编译原理优化课件
DAG构造算法的基本步骤
(1)
您可能关注的文档
最近下载
- 主管药师竞聘.pptx VIP
- 压疮的分期及处理.ppt
- 《鹊桥仙》(共19张PPT)统编版高中语文必修上册.pptx VIP
- 图书馆狮子儿童绘本.ppt
- 成都市建设工程围挡设置技术指南.pdf
- 2023年春重庆理工大学《00015大学英语》题库答案.pdf VIP
- 领导干部日常工作生活中应知应会的法律知识:贪污、受贿、职务侵占等犯罪的案例分析和警示教育(下篇)-2024年云南省执业药师公需课答案.docx VIP
- 银行营销个人工作计划5篇.docx VIP
- 2024年春季国开《学前教育科研方法》期末大作业(参考答案).docx
- 2024-2025学年初中音乐七年级下册苏少版(2024)教学设计合集.docx
文档评论(0)