71中间语言 713三地址代码 般形式:x:=yopz 表达式x+y*翻译成的三地址语句序列是 t1:=y* t2:=x+t1 演示Tabe73
7.1 中 间 语 言 7.1.3 三地址代码 一般形式:x := y op z 表达式x + y z翻译成的三地址语句序列是 t 1 := y z t 2 := x + t 1 演示Table7_3
71中间语言 三地址代码是语法树或DAG的一种线性表示 a:=(-b+c*d)+C*d 语法树的代码DAG的代码 b b C d c* d t3:=t1+t2 t 4 c* d t3+ t3+ t4
7.1 中 间 语 言 三地址代码是语法树或DAG的一种线性表示 a := (−b + cd ) + cd 语法树的代码 DAG的代码 t 1 := −b t 1 := −b t 2 := c d t 2 := c d t 3 := t 1 + t 2 t 3 := t 1 + t 2 t 4 := c d t 4 := t 3 + t 2 t 5 := t 3 + t 4 a := t 4 a := t 5
71中间语言 约定的三地址语句 赋值语句x:=ypz,x:=opy, x.y 无条件转移 goto L 条件转移 ifx relop y goto L 过程调用 param和 call p,n 过程返回 return 索引赋值x:=y和x订:=y 地址和指针赋值x:=&y,x:=*y和*x:=y
7.1 中 间 语 言 约定的三地址语句 • 赋值语句x := y op z, x := op y, x := y • 无条件转移goto L • 条件转移if x relop y goto L • 过程调用param x 和call p , n • 过程返回 return y • 索引赋值x := y[i]和 x[i] := y • 地址和指针赋值x := &y,x := y和x := y
四元式、三元式、间接三元式 三地址语句可看成中间代码的一种抽象 形式。编译程序中,三地址代码语句的 具体实现可以用记录表示,记录中包含 表示运算符和操作数的域。通常有三种 表示方法:四元式、三元式、间接三元 式
四元式、三元式、间接三元式 • 三地址语句可看成中间代码的一种抽象 形式。编译程序中,三地址代码语句的 具体实现可以用记录表示,记录中包含 表示运算符和操作数的域。通常有三种 表示方法:四元式、三元式、间接三元 式
a:=b*一c十b*-c 四元式 元式 op arg I arg2 result op argl arg O)minus c (O)minus c b Tt b(0) (2 )minus c (2 )minus c (3) b T4(3) b(2) (4)+ (4)+(1)(3) (5):= a (5)assign a (4)
a:=b*-c+b*-c 四元式 三元式 op arg1 arg2 result op arg1 arg2 (0) uminus c T1 (0) uminus c (1) * b T1 T2 (1) * b (0) (2)uminus c T3 (2)uminus c (3) * b T3 T4 (3) * b (2) (4) + T2 T4 T5 (4) + (1) (3) (5) := T5 a (5) assign a (4)