龙书6.2
6.2 节的练习
6.2.1
将算数表达式 a+-(b+c) 翻译成
- 抽象语法树
- 四元式序列
- 三元式序列
- 间接三元式序列
解答
-
抽象语法树
![6 2 1]()
-
四元式序列
op arg1 arg2 result 0 + b c t1 1 minus t1 t2 2 + a t2 t3 -
三元式序列
op arg1 arg2 0 + b c 1 minus (0) 2 + a (1) -
间接三元式序列
op arg1 arg2 0 + b c 1 minus (0) 2 + a (1) instruction 0 (0) 1 (1) 2 (2)
参考
6.2.2
对下列赋值语句重复练习 6.2.1
- a = b[i] + c[j]
- a[i] = b*c - b*d
- x = f(y+1) + 2
- x = *p + &y
解答
-
a = b[i] + c[j]
-
四元式
0) =[] b i t1
1) =[] c j t2
2) + t1 t2 t3
3) = t3 a -
三元式
0) =[] b i
1) =[] c j
2) + (0) (1)
3) = a (2) -
间接三元式
0) =[] b i
1) =[] c j
2) + (0) (1)
3) = a (2)0)
1)
2)
3)
-
-
a[i] = b*c - b*d
-
四元式
0) * b c t1
1) * b d t2
2) - t1 t2 t3
3) []= a i t4
4) = t3 t4 -
三元式
0) * b c
1) * b d
2) - (0) (1)
3) []= a i
4) = (3) (2) -
间接三元式
0) * b c
1) * b d
2) - (0) (1)
3) []= a i
4) = (3) (2)0)
1)
2)
3)
4)
-
-
x = f(y+1) + 2
-
四元式
0) + y 1 t1
1) param t1
2) call f 1 t2
3) + t2 2 t3
4) = t3 x -
三元式
0) + y 1
1) param (0)
2) call f 1
3) + (2) 2
4) = x (3) -
间接三元式
0) + y 1
1) param (0)
2) call f 1
3) + (2) 2
4) = x (3)0)
1)
2)
3)
4)
-
参考
6.2.3 !
说明如何对一个三地址代码序列进行转换,使得每个被定值的变量都有唯一的变量名。


浙公网安备 33010602011771号