- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理》课后习题答案第十一章
第 11 章 代码优化
第1题
何谓代码优化?进行优化所需要的基础是什么?
答案:
对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行
速度加快或占用存储空间减少,或两者都有。
优化所需要的基础是在中间代码生成之后或目标代码生成之后。
第2题
编译过程中可进行的优化如何分类?
答案:
依据优化所涉及的程序范围,可以分为:局部优化、循环优化和全局优化。
第3题
最常用的代码优化技术有哪些?
答案:
1. 删除多余运算
2. 代码外提
3. 强度削弱
4. 变换循环控制条件
5. 合并已知量与复写传播
6. 删除无用赋值
盛威网( )专业的计算机学习网站 1
《编译原理》课后习题答案第十一章
第 4 题
图 11.23 是图 11.22 的 C 代码的部分三地址代码序列。
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[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;
/* fragment ends here */
quicksort (m,j);
quicksort(i+1,n);
}
图 11.22
(1) i:=m-1
(2) j:=n
(3) t1:=4*n
(4) v:=a[t1]
(5) i:=i+1
(6) t2:=4*i
(7) t3:=a[t2]
(8) if t3 v goto (5)
(9) j:=j-1
(10) t5:=4*j
(11) t5:=a[t4]
(12) if t5 v goto (9)
(13) if i = j goto (23)
盛威网( )专业的计算机学习网站 2
《编译原理》课后习题答案第十一章
(14) t6:=4*i
(15) x:=a[t6] (16) t7:=4*i
(17) t6:=4*j
(18) t9:=a[t8]
(19) a[t7]:=t9
(20) t10:=4*j
(21) a[t10]:=x
(22) goto (5)
(23) t11:=4*i
(24) x:=a[t11]
(25) t12:=4*i
(26) t13:=4*n
(27) t14:=a[t13]
(28) a[t12]:=t14
(29) t15:=4*n
(30) a[t15]:=x
图 11.23
(1) 请将图 11.23 的三地址代码序列划分为基本块并做出其流图。
(2) 将每个基本块的公共子表达式删除。
(3) 找出流图中的循环,将循环不变量计算移出循环外。
(4) 找出每个循环中的归纳变量,并在可能的地方删除它们。
答案:
(1)
基本块
文档评论(0)