12.7 Summary

A compiler is a large programming project, but a highly visible one, within a computer system. Like many large pieces of software, good tools and good design facilitate the entire process.

This module has also discussed data structures and techniques used by compilers to facilitate decisions to be made at run-time. Many of the data structures for run-time structures are the same as those for symbol tables; we could easily use a stack symbol table structure for block-structured languages. Language features such as recursion, block structure and dynamic variables influence the type of run-time system required.

If a program is to be translated to assembly language, the assembler's run-time system takes care of many of the issues discussed here.

A translated program requires space for the code as wel1 as for the static data, and any space needed for the stack or heap data.

Real-life compilers often make compromises with the textbook descriptions as illustrated by Turbo Pascal.

In Module 13, we will discuss specific compiler details for compilers for special architectures such as RISC machines.

Send questions and comments to: Karen Lemone