The document discusses intermediate code in compilers. It defines intermediate code as the interface between a compiler's front end and back end. Using an intermediate representation facilitates retargeting a compiler to different machines and applying machine-independent optimizations. The document then describes different types of intermediate code like triples, quadruples and SSA form. It provides details on three-address code including quadruples, triples and indirect triples. It also discusses addressing of array elements and provides an example of translating a C program to intermediate code.