内容发布更新时间 : 2025/7/18 5:41:08星期一 下面是文章的全部内容请认真阅读。
③ 作为目标代码生成阶段地址分配的依据。
9-09.运行时存储器的划分是怎样的? 答:运行时存储器的划分如下图所示。
10-07. 简述优化的原则是什么?
答:编译程序提供的对代码优化必须遵循的原则是: (1) 等价原则。经过优化后不应改变程序运行的结果。
(2) 有效原则。使优化后所产生的目标代码运行时间较短,占用的存储空间较小。 (3) 合算原则。应尽可能以较低的代价取得较好的优化效果。 10-08.简述常用的优化技术有哪些? 答:编译程序中常用的优化技术有: (1) 删除公共子表示式; (2) 复写传播; (3) 删除无用代码; (4) 代码外提; (5) 强度削弱; (6) 删除归纳变量; (7) 合并常量。 10-09. 设有基本块: (1) a:=b-c (2) d:=a+4 (3) e:=a-b (4) f:=a+4 (5) b:=b+c (6) c:=b-f (7) b:=b-c (8) f:=b+f (9) a:=a-f (1) 画出DAG图;
(2) 假设基本块出口时只有a,b还被引用,请写出优化后的三地址代码序列。 解答:
(1)给出DAG如右:
(2)重写三地址代码如下:
9 b - 11 + a
10 f + 目标代码 静态数据 栈 ? ? 堆 8 c -
a:=b-c
10-10.何谓优化?按所涉及的程序范围可分为哪几级优化?
答:优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。 三种级别:局部优化、循环优化、全局优化。
10-11.设有基本块 T1:=2 T2:=10/T1 T3:=S-R T4:=S+R A:=T2 * T4 B:=A T5:=S+R T6:=T3 * T5 B:=T6 (1) 画出DAG图;
(2) 假设基本块出口时只有A,B还被引用,请写出优化后的三地址代码序列。 解:(1)DAG:见右图
(2) 优化后的四元式 T3:=S-R T4:=S+R A:=5*T4 B:=T3+T4
d:=a+4 f:=d e:=a-b b:=b+c c:=c+d b:=b-c f:=b-d a:=a+d