欢迎来到天天文库
浏览记录
ID:42975603
大小:1.32 MB
页数:140页
时间:2019-09-26
《独立于机器的优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章独立于机器的优化词法分析器语法分析器语义分析器源程序中间代码生成器独立于机器的代码优化器代码生成器依赖于机器的代码优化器目标机器代码符号表第九章独立于机器的优化代码优化通过程序变换(局部变换和全局变换)来改进程序,称为优化代码改进变换的标准代码变换必须保程序的含义采取安全稳妥的策略变换减少程序的运行时间平均达到一个可度量的值变换所作的努力是值得的第九章独立于机器的优化本章介绍独立于机器的优化,即不考虑任何依赖目标机器性质的优化变换通过实例来介绍代码改进的主要机会数据流分析包括的几类重要的全局收集的信息数据流分析的
2、一般框架和一般框架有区别的常量传播部分冗余删除的优化技术循环的识别和分析9.1优化的主要种类9.1.1优化的主要源头程序中存在许多程序员无法避免的冗余运算对于A[i][j]和X.f1这样访问数组元素和结构体的域的操作(例如,A[i][j]=A[i][j]+10)随着程序被编译,这些访问操作展开成多步低级算术运算对同一个数据结构的多次访问导致许多公共的低级运算程序员没有办法删除这些冗余9.1优化的主要种类9.1.2一个实例i=m1;j=n;v=a[n];(1)i=m1while(1){(2)j=ndoi=i+1;wh
3、ile(a[i]v);(4)v=a[t1]if(i>=j)break;(5)i=i+1x=a[i];a[i]=a[j];a[j]=x;(6)t2=4i}(7)t3=a[t2]x=a[i];a[i]=a[n];a[n]=x;(8)ift34、1;while(a[j]>v);(12)ift5>vgoto(9)if(i>=j)break;(13)ifi>=jgoto(23)x=a[i];a[i]=a[j];a[j]=x;(14)t6=4i}(15)x=a[t6]x=a[i];a[i]=a[n];a[n]=x;...9.1优化的主要种类i=m1j=nt1=4nv=a[t1]i=i+1t2=4it3=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B6程序流图9.5、1优化的主要种类9.1.3公共子表达式删除B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB29.1优化的主要种类局部公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB2t6=4ix=a[t6]t8=4jt9=a[t8]a[t6]=t6、9a[t8]=xgotoB29.1优化的主要种类i=m1j=nt1=4nv=a[t1]i=i+1t2=4it3=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B69.1优化的主要种类全局公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB2t6=4ix=a[t67、]t8=4jt9=a[t8]a[t6]=t9a[t8]=xgotoB29.1优化的主要种类全局公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB2t6=4ix=a[t6]t8=4jt9=a[t8]a[t6]=t9a[t8]=xgotoB2x=a[t2]t9=a[t4]a[t2]=t9a[t4]=xgotoB29.1优化的主要种类i=m1j=nt1=48、nv=a[t1]i=i+1t2=4it3=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B69.1优化的主要种类全局公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7
4、1;while(a[j]>v);(12)ift5>vgoto(9)if(i>=j)break;(13)ifi>=jgoto(23)x=a[i];a[i]=a[j];a[j]=x;(14)t6=4i}(15)x=a[t6]x=a[i];a[i]=a[n];a[n]=x;...9.1优化的主要种类i=m1j=nt1=4nv=a[t1]i=i+1t2=4it3=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B6程序流图9.
5、1优化的主要种类9.1.3公共子表达式删除B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB29.1优化的主要种类局部公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB2t6=4ix=a[t6]t8=4jt9=a[t8]a[t6]=t
6、9a[t8]=xgotoB29.1优化的主要种类i=m1j=nt1=4nv=a[t1]i=i+1t2=4it3=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B69.1优化的主要种类全局公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB2t6=4ix=a[t6
7、]t8=4jt9=a[t8]a[t6]=t9a[t8]=xgotoB29.1优化的主要种类全局公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7=4it8=4jt9=a[t8]a[t7]=t9t10=4ja[t10]=xgotoB2t6=4ix=a[t6]t8=4jt9=a[t8]a[t6]=t9a[t8]=xgotoB2x=a[t2]t9=a[t4]a[t2]=t9a[t4]=xgotoB29.1优化的主要种类i=m1j=nt1=4
8、nv=a[t1]i=i+1t2=4it3=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B69.1优化的主要种类全局公共子表达式删除,复写传播,删除死代码B5x=a[i];a[i]=a[j];a[j]=x;t6=4ix=a[t6]t7
此文档下载收益归作者所有