Types of Three-address codes

Three-address code is a sequence of statements of the general form A := B op C, where A, B, C are either programmer defined names, constants or compiler-generated temporary names; op stands for an operation which is applied on A, B.In simple words, a code having at most three addresses in a line is called three address codes.

Example:

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

The three address code for above expression is:

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

In compiler design the most popular intermediate code representation is Three-address code. It is globally accepted and is most widely used. There are a lot of three-address statements. All the complex three-address statements are generally a combination of simpler three-address statements.

These statements come under following seven categories and can be called as building block for three-address statements-



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

Now, by using the above statements let us convert some popular high level constructs in Three-address code.

1. While Statement –

while E do S

Three-address Code:

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

2. For Statement –

for(E1;E2;E3) do S

Three-address Code:

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

3. Switch Statement –

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

Three-address Code:

  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

Thus, we can see by using the seven statements we can replicate statements from higher level language into address codes.

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.