常见的代码优化技术有:复写传播,删除死代码, 强度削弱,归纳变量删除
(下面抄几页PPT和别人的博客,QAQ,关键是编译原理没认真学过,咱家不太会。。。)
如果有同学有研究过这部分内容,并总结过,有更好的答案,请联系我删除本篇非原创解答
例:
while(i <= limit - 2) ... // 代码外提后变成 t = limit - 2; while(i <= t) ...
j = j - 1 t4 = 4 * j t5 = a[t4] if t5 > value goto B3
死代码可以是以下几种类型:
未被使用的变量或常量:如果一个变量或常量在程序中定义了但没有被使用,编译器可以识别并将其删除,因为它不会对程序的输出结果产生任何影响。
无法达到的代码块:当存在分支语句(如条件语句或循环语句)时,编译器可以分析程序的控制流,识别出那些永远不会被执行的代码块,并将其删除。
无效的操作:如果存在一些对变量进行操作(如赋值、算术运算等),但这些操作的结果没有被使用或没有对程序的执行结果产生影响,编译器可以删除这些无效的操作。
无法访问的代码:当程序中存在被注释掉的代码或者被条件语句所排除的代码块时,编译器可以识别这些代码是无法访问到的,并将其删除。