While generating machine code directly from source code is possible, it entails two problems With m languages and n target machines, we need to write m front ends, m × n optimizers, and m × n code generators
The code optimizer which is one of the largest and very-difficult-to-write components of a compiler, cannot be reused
By converting source code to an intermediate code, a machine-independent code optimizer may be written T
This means just m front ends, n code generators and 1 optimizer
nptel