编译原理课件:Linux编程与应用课件:第10章优化3.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理课件:Linux编程与应用课件:第10章优化3.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理课件:Linux编程与应用课件:第10章 优化3 编译 原理 课件 Linux 编程 应用 10 优化
- 资源描述:
-
1、编译原理第十章第十章 优化优化第十章第十章 优化优化n优化概述优化概述n局部优化局部优化n循环优化循环优化第十章第十章 优化优化n优化优化:对程序进行各种:对程序进行各种等价等价变换,使得从变换,使得从变换后的程序出发,能生成更变换后的程序出发,能生成更有效有效的目标的目标代码。代码。等价等价:指不改变程序的运行结果。:指不改变程序的运行结果。有效有效:指目标代码:指目标代码运行时间短运行时间短,占用的,占用的存储空存储空间小间小。10.1 10.1 概述概述n优化的目的优化的目的p产生更高效的代码。产生更高效的代码。n优化必须遵循一定的优化必须遵循一定的原则原则:等价等价原则:经过优化后不应
2、改变程序运行的原则:经过优化后不应改变程序运行的结果;结果;有效有效原则:使优化后所产生的目标代码运行原则:使优化后所产生的目标代码运行时间较短,占用的存储空间较小;时间较短,占用的存储空间较小;合算合算原则:应尽可能以较低的代价取得较好原则:应尽可能以较低的代价取得较好的优化效果。的优化效果。10.1 10.1 概述概述n优化的三个不同级别:优化的三个不同级别:局部优化局部优化循环优化循环优化全局优化全局优化n优化的种类:优化的种类:删除多余运算删除多余运算( (或称删除公用子表达式或称删除公用子表达式) )代码外提代码外提强度消弱强度消弱变换循环控制条件变换循环控制条件合并已知量合并已知量
3、复写传播复写传播删除无用赋值删除无用赋值void quicksort (m, n);int m, n;int i, j;int v, x;if (n=m) return;/* fragment begins here*/i=m-1; j=n; v=a n;while (1) do i=i+1; while (a iv);if (i=j) break;x=a i; ai=a j; aj=x; x=ai; ai=a n; a n=x; /*fragment ends here*/ quicksort (m, j); quicksort (i+1, n);q中间代码程序段中间代码程序段 i:=m-1
4、j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:=4*ix:=a T6T7:=4*iT8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2B5T11:=4*ix:=a T11T12:=4*iT13:=4*nT14:=a T13a T12=T14T15:= 4*na T15=xB6q中间代码程序段中间代码程序段 i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto
5、B6B4T6:=4*ix:=a T6T7:=4*iT8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2B5T11:=4*ix:=a T11T12:=4*iT13:=4*nT14:=a T13a T12=T14T15:= 4*na T15=xB6q公共子表达式公共子表达式i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:=4*ix:=a T6T7:=4*iT8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2
6、B5T11:=4*ix:=a T11T12:=4*iT13:=4*nT14:=a T13a T12=T14T15:= 4*na T15=xB6如果一个表达式如果一个表达式E在前面已经计算过,且在这之后在前面已经计算过,且在这之后E中变量的值没有改变,中变量的值没有改变,则称则称E为公共子表达式为公共子表达式q删除公用子表达式后删除公用子表达式后i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:=4*ix:=a T6T7:=4*iT8:=4*jT9:=a T8a T7=T9T10:=
7、4*j a T10=xgoto B2B5T11:=4*ix:=a T11T12:=4*iT13:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:=4*ix:=a T6T7:=4*iT8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2B5T11:=4*ix:=a T11T12:=4*iT13:= T1T14:=a T13a T12=T14T15:= T13a T1
8、5=xB6q公共子表达式公共子表达式q删除公用子表达式后删除公用子表达式后i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T6T7:= T6T8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2B5T11:= T2x:=a T11T12:= T11T13:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2
9、if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T6T7:= T6T8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2B5T11:= T2x:=a T11T12:= T11T13:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6q公共子表达式公共子表达式q删除公用子表达式后删除公用子表达式后i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T6T7:=
10、T6T8:= T4T9:=a T8a T7=T9T10:= T8a T10=xgoto B2B5T11:= T2x:=a T11T12:= T11T13:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T6T7:= T6T8:= T4T9:=a T8a T7=T9T10:= T8a T10=xgoto B2B5T11:= T2x:=a T11T12:= T11T13
11、:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6B5中,中,T6:= T2和和x:=a T6中间中间T6的值没变过,可把的值没变过,可把x:=a T6改写成改写成x:=a T2,这种变换称为复写传播。这种变换称为复写传播。q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T2T7:= T2T8:= T4T9:=a T8a T2=T9T10:= T8a T10=xgoto B2B5T11:= T2x:=a T11T
12、12:= T11T13:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T2T7:= T2T8:= T4T9:=a T8a T2=T9T10:= T8a T10=xgoto B2B5T11:= T2x:=a T11T12:= T11T13:= T1T14:=a T13a T12=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=
13、4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T2T7:= T2T8:= T4T9:=a T8a T2=T9T10:= T8a T10=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=a T13a T2=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T2T
14、7:= T2T8:= T4T9:=a T8a T2=T9T10:= T8a T10=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=a T13a T2=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T2T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:=
15、 T1T14:=a T13a T2=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=a T2T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=a T13a T2=T14T15:= T13a T15=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T
16、2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=aT2T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=a T1a T2=T14T15:= T1a T1=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=aT2T7:= T2T8:= T4T9:=a T4a T
17、2=T9T10:= T4a T4=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=a T1a T2=T14T15:= T1a T1=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=aT2T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=va T2=vT15:= T1a T1=x
18、B6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=aT2T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4=xgoto B2B5T11:= T2x:=a T2T12:= T2T13:= T1T14:=va T2=vT15:= T1a T1=xB6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4
19、T6:= T2x:= T3T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4= T3goto B2B5T11:= T2x:= T3T12:= T2T13:= T1T14:=va T2=vT15:= T1a T1= T3B6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:= T3T7:= T2T8:= T4T9:=a T4a T2=T9T10:= T4a T4= T3goto B2B5T11:= T2x:= T3T12:=
20、 T2T13:= T1T14:=va T2=vT15:= T1a T1= T3B6q复写传播复写传播i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:= T3T7:= T2T8:= T4T9:= T5a T2= T5T10:= T4a T4= T3goto B2B5T11:= T2x:= T3T12:= T2T13:= T1T14:=va T2=vT15:= T1a T1= T3B6q删除无用赋值删除无用赋值i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T
21、2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:= T2x:=T3T7:= T2T8:= T4T9:=T5a T2=T5T10:= T4a T4= T3goto B2B5T11:= T2x:=T3T12:= T2T13:= T1T14:= va T2=vT15:= T1a T1= T3B6q删除无用赋值后删除无用赋值后 i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4a T2=T5a T4= T3goto B2B5a T2=va T1=T
22、3B6q强度削弱强度削弱 i:=m-1j:=nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4a T2=T5a T4= T3goto B2B5a T2=va T1=T3B6q强度削弱后强度削弱后 i:=m-1j:=nT1:=4*nv:=aT1T2:=4*iT4:=4*jB1i:=i+1T2:= T2+4 T3:=aT2if T3v goto B3B3if i=j goto B6B4a T2=T5a T4= T3goto B2B5a T2=va T1=T3B6q删除归纳变量删除归纳变量i:=m-1j:=nT1
23、:=4*nv:=aT1T2:=4*iT4:=4*jB1i:=i+1T2:= T2+4 T3:=aT2if T3v goto B3B3if i=j goto B6B4a T2=T5a T4= T3goto B2B5a T2=va T1=T3B6q删除归纳变量后删除归纳变量后i:=m-1j:=nT1:=4*nv:=aT1T2:=4*iT4:=4*jB1T2:= T2+4 T3:=aT2if T3v goto B3B3if T2=T4 goto B6B4a T2=T5a T4= T3goto B2B5a T2=va T1=T3B6q中间代码程序段中间代码程序段(优化前)(优化前) i:=m-1j:=
24、nT1:=4*nv:=aT1B1i:=i+1T2:=4*i T3:=aT2if T3v goto B3B3if i=j goto B6B4T6:=4*ix:=a T6T7:=4*iT8:=4*jT9:=a T8a T7=T9T10:= 4*j a T10=xgoto B2B5T11:=4*ix:=a T11T12:=4*iT13:=4*nT14:=a T13a T12=T14T15:= 4*na T15=xB6q中间代码程序段中间代码程序段(优化后)(优化后)i:=m-1j:=nT1:=4*nv:=aT1T2:=4*iT4:=4*jB1T2:= T2+4 T3:=aT2if T3v goto
25、B3B3if T2=T4 goto B6B4a T2=T5a T4= T3goto B2B5a T2=va T1=T3B610.2 10.2 局部优化局部优化n基本块基本块:指程序中一顺序执行语句序列,其中:指程序中一顺序执行语句序列,其中只有一个入口和一个出口。入口就是其中第一只有一个入口和一个出口。入口就是其中第一个语句,出口就是其中最后一个语句。个语句,出口就是其中最后一个语句。 例例:基本块基本块T1:=a*a T2:=a*b T3:=2*T2 T4:=T1+T2 T5:=b*b T6:=T4+T5q如果一条三地址语句为如果一条三地址语句为x:=y+z,则称对则称对x定值定值并并引用引
展开阅读全文