1 Storage Organization
2 Stack Allocation of Space
3 Access to Nonlocal Data on the Stack
4 Heap Management
5 Introduction to Garbage Collection
6 Introduction to Trace-Based Collection
7 Short-Pause Garbage Collection
8 Advanced Topics in Garbage Collection
A compiler must accurately implement the abstractions embodied in the source-language definition. These abstractions typically include the concepts we discussed in Section 1.6 such as names, scopes, bindings, data types, operators, procedures, parameters, and flow-of-control constructs. The compiler must co-operate with the operating system and other systems software to support these abstractions on the target machine.
To do so, the compiler creates and manages a run-time environment in which it assumes its target programs are being executed. This environment deals with a variety of issues such as the layout and allocation of storage locations for the objects named in the source program, the mechanisms used by the target pro-gram to access variables, the linkages between procedures, the mechanisms for passing parameters, and the interfaces to the operating system, input/output devices, and other programs.
two themes in this chapter are the allocation of storage locations and access
to variables and data. We shall discuss memory management in some detail,
including stack allocation, heap management, and garbage collection. In the
next chapter, we present techniques for generating target code for many common