- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章代码优化 5.1 局部优化 5.2 循环优化 优化的概念 代码优化 对代码进行等价变换,使得变换后的代码具有更高的时间效率和空间效率。 空间效率和时间效率有时是一对矛盾,有时不能兼顾。 优化要求 必须是等价变换(保持功能) 为优化的努力必须是值得的 代码优化的分类 机器相关性 机器相关优化:寄存器优化,多处理器优化,特殊指令优化,无用指令消除等。 机器无关优化:对中间代码的优化。 优化范围 局部优化:单个基本块范围内的优化,包括常量合并、公共子表达式删除、计算强度削弱和无用代码删除等。 全局优化:主要是基于循环的优化,包括循环不变量代码外提、删除归纳变量、计算强度削弱等。 优化语言级 优化语言级:针对中间代码,针对机器语言。 代码优化主要完成的工作 控制流分析的主要目的是分析出程序的循环结构。 循环结构中的代码的效率是整个程序的效率的关键。 数据流分析进行数据流信息的收集,主要是变量的值 的获得和使用情况的数据流信息。 到达-定义分析;活跃变量分析;可用表达式分析; 代码变换:根据上面的分析,对内部中间代码进行等 价变换。 5.1 局部优化 指基本块内的优化。 基本块:是指程序(本课本中假设已经是四元式表示的程序了)中一顺序执行的语句序列,其中只有一个入口语句和一个出口语句。 5.1.1 基本块的划分 入口语句 (1)四元式语句序列的第一个语句; (2)条件转移语句或无条件转移语句转移到的目标语句; (3)紧跟在条件转移语句后面的语句。 出口语句 (1)下一个入口语句的前导语句; (2)转移语句(包括其自身); (3)停语句(包括其自身)。 基本块的划分 1、求出四元式程序之中各个基本块的入口语句。 2、对每一入口语句,构造其所属的基本块。即由该入口语句到出口语句之间的语句序列。 3、凡未被纳入某一基本块的语句,都是程序中控制流程无法到达的语句,因而也是不会被执行到的语句,可以把它们删除。 【例】有四元式代码程序如下: (1) read (C) (2) A= 0 (3) B= 1 (4) L1: A=A + B (5) if B= C goto L2 (6) B=B+1 (7) goto L1 (8) L2: write (A) (9) halt 为其划分基本块。 5.1.2 基本块的DAG表示 DAG 指有向无环图( Directed Acyclic Graph ),常用来对基本块进行优化。 基本块的 DAG 是在结点上带有标记的 DAG。 叶结点 代表名字的初值,以唯一的标识符(变量名字或常数)标记。通常用x0表示变量名字x的初值。 内部结点 用运算符作为标记。 所有结点都可有一个或多个附加标识符,表示这些变量具有该结点所代表的值。 四元式和与其对应的DAG结点形式 设 A=B, A=op B, A=B op C分别为第0、1、2型四元式,设函数 Node(name) 返回最近创建的关联于 name 的结点。 首先,置 DAG 为空。 对基本块的每一个四元式,依次执行下列步骤: 若 Node(B) 无定义,则创建一个标记为 B 的叶结点,并令Node(B) 为这个结点; (1) 对于2型四元式, 若Node(C) 无定义,再创建标记为C 的叶结点,并令 Node(C) 为这个结点。 若 Node(B)和 Node(C)都是标记为常数的叶结点,执行B op C,令得到的新常数为p。 若Node(p) 无定义,则构造一个用 p 做标记的叶结点 n,置Node(p)=n。 若 Node(B) 或 Node(C)是处理当前语句时新构造出来的结点,则删除它。 (这一步有合并已知量的作用) 若 Node(B) 或 Node(C)不是标记为常数的叶结点,则检查是否存在某个标记为 op 的结点,其左孩子是 Node(B) ,而右孩子是Node(C) ? 若无,则创建这样的结点。 若有,则把已有的结点作为它的结点并且 无论有无,都令该结点为 n。 (这一步有删除多余运算的作用) (2)对于1型四元式 若 Node(B) 是标记为常数的叶结点,则执行 op B,令得到的新常数为p. 若 Node(p)无定义,则构造一个用 p 做标记的叶结点 n,置node(p)=n。 若Node(B) 是处理当前语句时新构造出来的结点,则删除它。(这一步有合并已知量的作用) 若 Node(B) 不是标记为常数的叶结点,则检查是否存在某个标记为 op 的结点,其唯一的孩子是Node(B)? 若无,则创建这
您可能关注的文档
最近下载
- 《建筑与市政工程施工现场临时用电安全技术标准JGJT46-2024》知识培训.pptx VIP
- 5G+虚拟现实开发应用赛项理论备考试题库(含答案).docx VIP
- T_CAWAORG 014—2024(老年综合评估及干预技术应用规范).pdf VIP
- 甘肃省武威市凉州区第十中学2024-2025学年九年级上学期第一次月考数学试卷.docx VIP
- 基于JX-300XP的板式精馏塔DCS控制系统的设计.doc VIP
- 装饰合同封面.doc VIP
- PLC的全自动工业洗衣机系统方案设计课程方案设计说明书.doc VIP
- 2023年陕西邮电职业技术学院教师招聘考试题库及答案解析.docx VIP
- (新人教版)音乐一年级上册 全册教学课件.pptx
- 2024年广东省专升本英语考试真题及答案7257.pdf VIP
文档评论(0)