下载此文档

哈里伯顿内部材料.ppt


文档分类:经济/贸易/财会 | 页数:约52页 举报非法文档有奖
1/52
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/52 下载此文档
文档列表 文档介绍
哈里伯顿内部材料.ppt第八章代码优化
逐条语句进行的代码生成策略经常产生含有大量冗余指令和次最优结构的目标代码。
1
1、源程序级:局部优化、循环优化、全局优化
1、节省时间 2、节省空间
二、优化技术
一、优化目的
2、目标代码级的优化
三、优化原则
1、等价原则
2、有效原则
3、合算原则
2
Void quicksort(a,m,n);
Int m,n,a[];
{ int I,j;
int v,x;
if(n<=m) return;
I=m-1;j=n;v=a[n]
While(1){
Do {I=I+1;}while (a[I]<v);
Do{j=j-1;}while(a[j]>v);
If(I>=j)break;
X=a[I];a[I]=a[j];a[j]=x; }
X=a[I];a[I]=a[n];a[n]=x;
Quicksort(m,j);quicksort(I+1,n); }
例:快速排序程序
优化的主要种类
3
i=m-1
j=n
t1=4*n
v=a[t1]
i=i+1
t2=4*i
t3=a[t2]
If t3<v goto B2
j=j-1
t4=4*j
t5=a[t4]
If t5<v goto B3
If I>=j goto b6
t11=4*I
x=a[t11]
t12=4*I
t13=4*n
t14=a[t13]
a[12]=t14
t14=4*n
a[15]=x
t6=4*I
x=a[t6]
t7=4*i
t8=4*j
t9=a[t8]
a[t7]=t9
t10=4*j
a[t10]x
goto b2
中间代码程序段
B1
B6
B5
B4
B3
B2
i=m-1
j=n
t1=4*n
v=a[t1]
i=i+1
t2=4*i
t3=a[t2]
if t3<v goto B2
j=j-1
t4=4*j
t5=a[t4]
if t5<v goto B3
if i>=j goto B6
t11=4*I
x=a[t11]
t12=4*I
t13=4*n
t14=a[t13]
a[12]=t14
t14=4*n
a[15]=x
t6=4*I
x=a[t6]
t7=4*i
t8=4*j
t9=a[t8]
a[t7]=t9
t10=4*j
a[t10]x
goto b2
4
如果一个表达式E在前面已经定义过,
对于公共子表达式,避免对它的重复计算,称为删除公共子表达式
一、删除公共子表达式
并且在这之后E中的变量的值没有改变,
则称E为公共子表达式
5
t6=4*i
x=a[t6]
t7=4*i
t8=4*j
t9=a[t8]
a[t7]=t9
t10=4*j
a[t10]=x
goto b2
t6=t2
x=a[t6]
t7=t6
t8=t4
t9=a[t8]
a[t7]=t9
t10=t8
a[t10]=x
goto b2
删除公共子表达式
B5
在B2中t2=4*i; 在B3 中t4=4*j
6
t11=t2
x=a[t11]
t12=t11
t13=t1
t14=a[t13]
a[12]=t14
t14=t13
a[15]=x
t11=4*i
x=a[t11]
t12=4*i
t13=4*n
t14=a[t13]
a[12]=t14
t14=4*n
a[15]=x
删除公共子表达式
B6
在B1中t1=4*n;
7
在B5中t6=t2,而x=a[t6]中引用了t6,
二、复写传播。
这种变换称为复写传播。
而在
这中间t6的值没有被改变,
因此可以把x=a[t6]改写为x=a[t2],
8
i=m-1
j=n
t1=4*n
v=a[t1]
i=i+1
t2=4*i
t3=a[t2]
if t3<v goto B2
j=j-1
t4=4*j
t5=a[t4]
tf t5<v goto B3
if I>=j goto B6
t11=t2
x=t3
t12=t2
t13=t1
t14=v
a[t2]=v
t15=t1
a[t1]=t3
t6=t2
x=t3
t7=t2
t8=t4
t9=t5
a[t2]=t5
t10=t4
a[t4]=t3
goto B2
复写传播后
B1
B6
B5
B4
B3
B2
t6=t2
x=t3
t7=t2
t8=t4
t9=t5
a[t2]=t5
t10=t4
a[t4]=t3
goto B2
t11=t2
x=t3
t12=t2
t13=t1
t14=v
a[t2]=v
t15=t1
a[t1]=t3
9
复写传播的目的是使某些变量的赋值变为无用
三、删除无用表达式
对B5进行复写传播后,
在整个程序

哈里伯顿内部材料 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数52
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xinsheng2008
  • 文件大小271 KB
  • 时间2017-09-07