📜  三地址代码的类型

📅  最后修改于: 2021-06-28 07:43:58             🧑  作者: Mango

三地址代码是一系列语句,其形式通常为A:= B op C ,其中A,B,C是程序员定义的名称,常量或编译器生成的临时名称。 op表示应用于A,B的操作。简单来说,一行中最多具有三个地址的代码称为三个地址代码。

例子:

(a+b)*(a+b+c) 

上面的表达式的三个地址代码是:

t1=a+b
t2=t1+c
t3=t1*t2

在编译器设计中,最流行的中间代码表示形式是三地址代码。它是全球公认的,使用最广泛。有很多三个地址的语句。通常,所有复杂的三地址语句都是更简单的三地址语句的组合。

这些语句分为以下七个类别,可以称为三地址语句的构建块-

Statement Meaning
X = Y op Z Binary Operation
X= op Z Unary Operation
X = Y Assignment
if X(rel op)Y goto L Conditional Goto
goto L Unconditional Goto
A[i] = X
Y= A[i]
Array Indexing
P = addr X
Y = *P
*P = Z
Pointer Operations

现在,通过使用以上语句,我们可以使用三地址代码转换一些流行的高级构造。

1. While陈述–

while E do S

三地址代码:

L:if(E==0) goto L1
  S
  goto L
L1:end

2.声明–

for(E1;E2;E3) do S

三地址代码:

E1
L:if(E2) goto L1
  goto L2
L1:S
L2:end

3.切换语句–

switch(E){
case 1: S1
        break;
case 2: S2
        break;
default: S3
}

三地址代码:

t=E
  goto test
L1:S1
  goto Last
L2:S2
   goto Last
L3:S3
   goto Last
test: if(E==1) goto L1
      if(E==2) goto L2
      goto L3
Last:end

因此,我们可以看到通过使用这七个语句,我们可以将高级语言中的语句复制到地址代码中。