第九章代码优化•通过程序变换(局部变换和全局变换)来改进程序,称为优化•介绍独立于机器的优化,即不考虑任何目标机器性质的优化变换•流图中循环的识别•数据流分析•代码改进变换9.1优化的主要种类•9.1.1代码改进变换的标准•代码变换必须保程序的含义•采取安全稳妥的策略•变换减少程序的运行时间平均达到一个可度量的值•变换所作的努力是值得的9.1优化的主要种类•本节所用的例子•i=m1;j=n;v=a[n];(1)i:=m1•while(1){(2)j:=n•doi=i+1;while(a[i]v);(4)v:=a[t1]•if(i>=j)break;(5)i:=i+1•x=a[i];a[i]=a[j];a[j]=x;(6)t2:=4*i•}(7)t3:=a[t2]•x=a[i];a[i]=a[n];a[n]=x;(8)ift3v);(12)ift5>vgoto(9)•if(i>=j)break;(13)ifi>=jgoto(23)•x=a[i];a[i]=a[j];a[j]=x;(14)t6:=4*i•}(15)x:=a[t6]•x=a[i];a[i]=a[n];a[n]=x;...•9.1优化的主要种类i:=m1j:=nt1:=4*nv:=a[t1]i:=i+1t2:=4*it3:=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B69.1优化的主要种类•9.1.2公共子表达式删除•B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB29.1优化的主要种类•B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB29.1优化的主要种类•B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB2t6:=4*ix:=a[t6]t8:=4*jt9:=a[t8]a[t6]:=t9a[t8]:=xgotoB29.1优化的主要种类i:=m1j:=nt1:=4*nv:=a[t1]i:=i+1t2:=4*it3:=a[t2]ift3vgotoB3ifi>=jgotoB6B4B3B5B69.1优化的主要种类•B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB2t6:=4*ix:=a[t6]t8:=4*jt9:=a[t8]a[t6]:=t9a[t8]:=xgotoB29.1优化的主要种类•B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB2t6:=4*ix:=a[t6]t8:=4*jt9:=a[t8]a[t6]:=t9a[t8]:=xgotoB2x:=a[t2]t9:=a[t4]a[t2]:=t9a[t4]:=xgotoB29.1优化的主要种类i:=m1j:=nt1:=4*nv:=a[t1]...