第章代码优化PPT推荐.ppt

上传人:b****2 文档编号:15040436 上传时间:2022-10-27 格式:PPT 页数:75 大小:1.58MB
下载 相关 举报
第章代码优化PPT推荐.ppt_第1页
第1页 / 共75页
第章代码优化PPT推荐.ppt_第2页
第2页 / 共75页
第章代码优化PPT推荐.ppt_第3页
第3页 / 共75页
第章代码优化PPT推荐.ppt_第4页
第4页 / 共75页
第章代码优化PPT推荐.ppt_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

第章代码优化PPT推荐.ppt

《第章代码优化PPT推荐.ppt》由会员分享,可在线阅读,更多相关《第章代码优化PPT推荐.ppt(75页珍藏版)》请在冰豆网上搜索。

第章代码优化PPT推荐.ppt

、优化的概念:

优化的定义优化的定义:

对程序进行各种等价变换,使得变对程序进行各种等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,换后的代码运行结果与变换前代码运行结果相同,而运行速度加大,或占用存储空间减少,或两者而运行速度加大,或占用存储空间减少,或两者都有。

都有。

我们通常称这种变换为我们通常称这种变换为优化优化。

11.111.1优化技术简介优化技术简介首页首页结束结束编译原理代码优化优化的目的是为了产生更高效的代码。

由优化编优化的目的是为了产生更高效的代码。

由优化编译程序提供的对代码的各种变换必须遵循下面的译程序提供的对代码的各种变换必须遵循下面的原则:

原则:

1)等等价价原原则则主主要要指指优优化化后后的的目目标标代代码码运运行行时时间间较较短短,以及占用的存储空间较小。

以及占用的存储空间较小。

2)2)有有效效原原则则使使优优化化后后所所产产生生的的目目标标代代码码运运行行时时间确实较短,占用的空间确实较小间确实较短,占用的空间确实较小33)合合算算原原则则应应尽尽可可能能以以较较低低的的代代价价取取得得较较好好的的优化效果优化效果22、优化的原则、优化的原则首页首页结束结束编译原理代码优化3、代码优化的基本方法、代码优化的基本方法按照与机器相关的程度,代码优化分为:

按照与机器相关的程度,代码优化分为:

u与机器相关的优化:

在生成目标程序时进行的,与机器相关的优化:

在生成目标程序时进行的,它在很大程度上与具体的计算机有关。

它在很大程度上与具体的计算机有关。

u与机器无关的优化:

在语法、语义分析生成中间与机器无关的优化:

在语法、语义分析生成中间代码之后,在中间代码上进行,这一类优化不依代码之后,在中间代码上进行,这一类优化不依赖于具体的计算机,而取决于语言的结构。

赖于具体的计算机,而取决于语言的结构。

首页首页结束结束编编译译原原理理代代码码优优化化首页首页结束结束根据优化所涉及的程序范围分成根据优化所涉及的程序范围分成:

u局部优化:

基本块范围内的优化:

合并已知量局部优化:

合并已知量消除公共子表达式,削减计算强度和删除无用消除公共子表达式,削减计算强度和删除无用代码代码u循环优化:

主要是基于循环的优化,包括循环循环优化:

主要是基于循环的优化,包括循环不变式外提,归纳变量删除,计算强度削减。

不变式外提,归纳变量删除,计算强度削减。

u全局优化:

主要是在整个程序范围内进行的优全局优化:

主要是在整个程序范围内进行的优化。

化。

因为程序段是非线性的,因此需要分析程因为程序段是非线性的,因此需要分析程序的控制流和数据流,处理比较复杂。

序的控制流和数据流,处理比较复杂。

编译原理代码优化44、优化技术、优化技术合并常量计算合并常量计算消除公共子表达式消除公共子表达式削减计算强度削减计算强度删除无用代码删除无用代码循环不变表达式外提循环不变表达式外提归纳变量删除归纳变量删除首页首页结束结束演示演示编译原理代码优化局限于基本块范围内的优化称为基本块内的优化局限于基本块范围内的优化称为基本块内的优化或或局部优化局部优化。

11、基本块的定义、基本块的定义所谓所谓基本块基本块是指程序中一顺序执行的语句序是指程序中一顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语中的第一个语句,出口就是其中的最后一个语句。

句。

11.211.2局部优化局部优化首页首页结束结束编译原理代码优化划分四元式程序为基本块的算法如下:

划分四元式程序为基本块的算法如下:

(1)求出四元式程序中各个基本块的)求出四元式程序中各个基本块的入口语句入口语句,它们可以是下述语句之一:

它们可以是下述语句之一:

程序的第一个语句;

22基本块的划分算法基本块的划分算法紧跟在条件转移语句后面的语句。

紧跟在条件转移语句后面的语句。

能由条件转移语句或无条件转移语句转能由条件转移语句或无条件转移语句转移到的目标语句;

移到的目标语句;

首页首页结束结束编译原理代码优化

(2)对以上求出的每一入口语句构造其所属的基)对以上求出的每一入口语句构造其所属的基本块。

它是由该入口语句到另一入口语句本块。

它是由该入口语句到另一入口语句(不包括不包括该入口语句该入口语句),或到一转移语句,或到一转移语句(包括该转移语句包括该转移语句),或到一停语句(包括该停语句,或到一停语句(包括该停语句)之间的语句序列之间的语句序列组成的。

组成的。

(3)凡未被纳入某一基本块的语句,都是程序中凡未被纳入某一基本块的语句,都是程序中控制流程无法到达的语句,因而也是不会被执行控制流程无法到达的语句,因而也是不会被执行到的语句,将其删除。

到的语句,将其删除。

22基本块的划分算法基本块的划分算法首页首页结束结束编译原理代码优化【例如】有下列三地址代码程序:

【例如】有下列三地址代码程序:

1)readXreadX2)readYreadY3)RR:

=XmodY=XmodY4)ififR=0goto(8)5)X:

=Y6)Y:

=R7)goto(3)8)writeY9)halt划分为划分为44个基本块个基本块:

B11B11)、)、22)B23)B23)、44)B35B35)、)、66)、)、77)B48B48)、)、99)首页首页结束结束编译原理代码优化【例如】划分基本块【例如】划分基本块

(1)read(C)

(2)A:

=0(3)B:

=1(4)L1:

A:

=A+B(5)ifB=CgotoL2(6)B:

=B+1(7)gotoL1(8)L2:

write(A)(9)halt划分为划分为44个基本块个基本块:

B1B1(11)、()、(22)、)、(33)B2B2(44)、()、(55)B3B3(66)、()、(77)B4B4(88)、()、(99)首页首页结束结束编译原理代码优化33、基本块的变换、基本块的变换基本块内可进行的优化:

基本块内可进行的优化:

合并已知常量和复写传播合并已知常量和复写传播临时变量改名临时变量改名交换语句的位置交换语句的位置删除公共子表达式删除公共子表达式删除无用代码删除无用代码首页首页结束结束编编译译原原理理代代码码优优化化首页首页结束结束基本块优化的实现基本块优化的实现从四元式序列构造从四元式序列构造DAGDAG,然后再从,然后再从DAGDAG重重写四元式。

写四元式。

44、基本块的有向图基本块的有向图DAGDAG表示表示基本块内部优化实现的主要工具为:

基本块内部优化实现的主要工具为:

DAG(DirectedAcyclicGraphDAG(DirectedAcyclicGraph的缩写的缩写)uDAG:

DAG:

如果有向图中任一通路都不是环路如果有向图中任一通路都不是环路,则称则称该有向图为无环路有向图,也称有向非循环图该有向图为无环路有向图,也称有向非循环图,简简称称DAGDAG。

u用用DAGDAG图表示各个值的计算图表示各个值的计算/依赖关系。

依赖关系。

演示演示编译原理代码优化DAG图中结点的特点图中结点的特点1.1.叶结点叶结点标记标记:

标识符名标识符名(变量名变量名)或常数或常数,写在结点下面。

写在结点下面。

代表代表:

该结点代表该变量或常数的值。

地址的表示:

Addr(A)Addr(A)通常将其标识符加上下标通常将其标识符加上下标0,0,表示该变量的初值。

表示该变量的初值。

2.2.内部结点内部结点标记标记:

一个运算符号,写在结点下面。

利用后续结点运算出来的值。

33图中各个结点可能附加一个或多个标识符图中各个结点可能附加一个或多个标识符,表示这些标表示这些标识符具有该结点所代表的值,同一个结点的标识符表示相识符具有该结点所代表的值,同一个结点的标识符表示相同的值,写在结点右面。

同的值,写在结点右面。

编编译译原原理理代代码码优优化化首页首页结束结束四元式相应的四元式相应的DAG

(1)AA:

=opB=opB11型型编编译译原原理理代代码码优优化化首页首页结束结束编译原理代码优化该算法只对如下三种四元式构造该算法只对如下三种四元式构造DAGDAG:

00型型A:

=BA:

=Bll型型A:

=opBA:

=opB22型型A:

=BopCA:

=BopCopop是双目运算符还可以是是双目运算符还可以是=或或=。

基本块的基本块的DAGDAG构造算法构造算法编译原理代码优化输入:

一个基本块输入:

一个基本块输出:

相应输出:

相应DAG图图算法说明:

算法说明:

u通过逐个扫描四元式来逐渐建立通过逐个扫描四元式来逐渐建立DAG图。

图。

u函数函数node(A)的值或者是一个结点的编号的值或者是一个结点的编号n或或者无定义。

如果是前一种情况,代表存在一个者无定义。

如果是前一种情况,代表存在一个结点结点n,A是其上的标记或附加标识符。

是其上的标记或附加标识符。

基本块的基本块的DAGDAG构造算法构造算法编编译译原原理理代代码码优优化化首页首页结束结束首先首先DAGDAG为空。

为空。

对基本块的每一四元式,依次执行:

11如果如果NODENODE(BB)无定义,则构造一标记为)无定义,则构造一标记为BB的叶结的叶结点并定义点并定义NODENODE(BB)为这个结点;

)为这个结点;

如果当前四元式是如果当前四元式是00型,则记型,则记NODE(B)NODE(B)的值为的值为nn,转,转44。

如果当前四元式是如果当前四元式是11型,则转型,则转2.

(1)2.

(1)。

如果当前四元式是如果当前四元式是22型,则:

型,则:

(I)(I)如果如果NODE(C)NODE(C)无无定义,则构造一标记为定义,则构造一标记为CC的叶结点并定义的叶结点并定义NODE(C)NODE(C)为为这个结点;

这个结点;

(II)(II)转转2.

(2)2.

(2)编译原理代码优化2(合并已知量)(合并已知量)

(1)如果)如果NODE(B)是标记为常数的叶结点是标记为常数的叶结点,则转,则转2(3),否则转,否则转3.

(1)。

)。

(2)如果)如果NODE(B)和和NODE(C)都是标记为常数的叶都是标记为常数的叶结点,则转结点,则转2.(4),否则转),否则转3.

(2)。

(3)执行)执行opB(即合并已知量),令得到的新常数(即合并已知量),令得到的新常数为为P。

如果。

如果NODE(B)是处理当前四元式时新构造出来是处理当前四元式时新构造出来的结点,则删除它。

如果的结点,则删除它。

如果NODE(P)无定义,则构造无定义,则构造一用一用P做标记的叶结点做标记的叶结点

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1