Three Address Code Report
Three Address Code Report
Three Address Code Report
Report
On
Submitted by
NAME: Astha Malviya
ROLL NO: 202110101110093
Group: 64
Submitted To
Ms. NEETA
(Asst. Prof.)
INTRODUCTION:
Example :
x + y * z t1 = y * z t2 = x +t1 t1 and t2
are compiler-generated temporary names Statements in this
language are of the form: x:=y opz
where x, y and z are names, constants or compiler-generated
temporary variables, and ‘op’ stands for any operator .
Three Address Code is a linearized representation of a syntax
trees or a DAG .
T1 = b – c
T2 = a * t1
T3= a +t2
T4 = t1 * d
T5 = t3 +t4
LITERATURE REVIEW:
Three Address Code is Used in Compiler
Applications
1. Optimization: Three address code is often used as an
intermediate representation of code during optimization
phases of the compilation process. The three address
code allows the compiler to analyze the code and
perform optimizations that can improve the performance
of the generated code.
2. Code generation: Three address code can also be used
as an intermediate representation of code during the
code generation phase of the compilation process. The
three address code allows the compiler to generate code
that is specific to the target platform, while also ensuring
that the generated code is correct and efficient.
3. Debugging: Three address code can be helpful in
debugging the code generated by the compiler. Since
three address code is a low-level language, it is often
easier to read and understand than the final generated
code. Developers can use the three address code to
trace the execution of the program and identify errors or
issues that may be present.
4. Language translation: Three address code can also be
used to translate code from one programming language
to another. By translating code to a common
intermediate representation, it becomes easier to
translate the code to multiple target languages.
General Representation
a = b op c
Where a, b or c represents operands like names,
constants or compiler generated temporaries
and op represents the operator.
EXAMPLE-
Advantage –
Easy to rearrange code for global
optimization.
One can quickly access value of
EXAMPLE-
Consider expression a = b * – c + b * – c. The three address code
is:
t1 = u-c
t2 = b * t1
t3 = u-c
t4 = b * t3
t5 = t2 + t4
a = t5
2. Triples – This representation doesn’t
make use of extra temporary variable to
represent a single operation instead
when a reference to another triple’s
value is needed, a pointer to that triple
is used. So, it consist of only three fields
namely op, arg1 and arg2.
Disadvantage –
Temporaries are implicit and