- 124
- 0
- 约2.76万字
- 约 14页
- 2016-08-22 发布于贵州
- 举报
编译原理分知识点习 代码优化
1.与机器有关的代码优化有那些种类,请分别举例说明。
解答:与机器有关的优化有:寄存器优化,多处理优化,特殊的指令优化,无用的指令消除等四类。
冗余指令删除
假设源程序指令序列
a:=b+c; c:=a-d;
编译程序为其生成的代码很可能是下列指令序列:
MOV b, R0
ADD c, R0
MOV R0,a
SUB d, R0
MOV R0,c
假如第四条指令没有标号,上述两个赋值语句在一个基本块内,则第四条指令是多余的,可删除。
特殊指令的使用
例如,如果目标机器指令系统包含增1指令INC,对于i:=i+1的目标代码
MOV i, R0
ADD #1, R0
MOV R0, i
便可被代之以1条指令
Inc i
说明:优化的特点是每个改进可能会引发新的改进机会,为了得到最好的改进,一般可能需要对目标代码重复扫描进行优化。
2.设有语句序列
a:=20
b:=a*(a+10);
c:=a*b;
试写出合并常量后的三元式序列。
解答:该语句序列对应的三元式序列为:
(1) (:=, 20,a)
(2) (+, a, 10)
(3) (*, a, (2) )
(4) (:=, a, b)
(5) (* a, b)
(6) (:=, (5), c)
合并常量后的三元式序列为:
(:=, 20,a)
(:=, 600, b)
原创力文档

文档评论(0)