Unit 5 - Intermediate Code Generation
Unit 5 - Intermediate Code Generation
C SPARC C SPARC
Pascal HP PA Pascal HP PA
IR
FORTRAN x86 FORTRAN x86
+
a +
a
* * *
Postfix notation: A B + C D + *
• Ex: (A + B) * C
Postfix notation: A B + C *
Postfix notation: A B * C D * +
• Ex: (A * B) + (C * D)
Mekonen M. # CoSc4072 Unit 5 – Intermediate Code Generation 9
Three address code
• Three address code is a sequence of statements of the general form,
a:= b op c
• Where a, b or c are the operands that can be names or constants and op stands
for any operator.
• Example: a = b + c + d
t1=b+c
t2=t1+d
a= t2
• Here t1 and t2 are the temporary names generated by the compiler.
• There are at most three addresses allowed (two for operands and one for result).
Hence, this representation is called three-address code.
t4 = t3 * b
t5 = t2 + t4
x= t5
Quadruple
No. Operator Arg1 Arg2 Result
x= -a*b + -a*b
t1= - a (0) uminus a t1
t2 = t1 * b (1) * t1 b t2
t3= - a (2) uminus a t3
t4 = t3 * b (3) * t3 b t4
t5 = t2 + t4
(4) + t2 t4 t5
x= t5
(5) = t5 x
Quadruple Triple
No. Operator Arg1 Arg2 Result No. Operator Arg1 Arg2
(0) uminus a t1 (0) uminus a
(1) * t1 b t2 (1) * (0) b
(2) uminus a t3 (2) uminus a
(3) * t3 b t4 (3) * (2) b
(4) + t2 t4 t5 (4) + (1) (3)
(5) = t5 x (5) = x (4)