One of the purposes of using intermediate code in compilers is to

20142025

One of the purposes of using intermediate code in compilers is to

  1. A.

    make parsing and semantic analysis simpler.

  2. B.

    improve error recovery and error reporting.

  3. C.

    increase the chances of reusing the machine-independent code optimizer in other compilers.

  4. D.

    improve the register allocation.

Attempted by 159 students.

Show answer & explanation

Correct answer: C

Short answer: Using an intermediate representation provides a machine-independent layer that enables reuse of a machine-independent optimizer across different compilers and simplifies retargeting to new machines.

  • Why this is the best choice: An intermediate representation (IR) is machine-independent, so a single, machine-independent optimizer can be applied to many front ends and paired with different back ends. This increases reuse and portability of optimization logic.

  • Why it does not make parsing and semantic analysis simpler: Parsing and semantic analysis are performed before IR generation. The IR is produced after those phases, so it cannot simplify them.

  • Why it is not primarily for error recovery/reporting: Error reporting and recovery are handled during parsing and semantic analysis; producing an IR is not intended to improve those features.

  • Why register allocation is only tangential: Register allocation is a target-specific back-end problem. The IR can provide information that helps back-end optimizations (including register allocation), but improving register allocation is not the main purpose of introducing an IR.

Correct answer: increase the chances of reusing the machine-independent code optimizer in other compilers.

A video solution is available for this question — log in and enroll to watch it.

Explore the full course: Gate Guidance By Sanchit Sir