12.1
A Compiler as a Software Project

12.2
Features, Techniques and Tradeoffs

12.3
Run-Time Storage Management

12.4
Incremental Compiling

12.5
Compiler Example: Borland Turbo Compilers

12.6
Compiler Example: Ada Compilers

12.7
Summary

Web References

Exercises

E-Mail

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.