Lecture 17: Mapping Program State to Memory, Including Register Allocation
Register Machines and Basic Mapping
Register Allocation
From Stack Machine to Register Machine
Register Allocation using Liveness Information
Sketched: Live-Variable Analysis
Optional Additional Information
Heap: Explicit Dynamic Memory Management
How to implement heap where data lives longer than procedures in which it is created?
Scala code:
References
- Donald Knuth. Fundamental Algorithms, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89683-4. Section 2.5: Dynamic Storage Allocation, pp.435–456.
- Tiger book, Chapter 13
Compiling Advanced forms of Procedures
References
- Tiger book, chapters 6, 15
- Simon L. Peyton Jones, The Implementation of Functional Programming Languages, Prentice-Hall, 1987
- Efficient dynamic dispatch without virtual function tables: the SmallEiffel compiler (and the references in this paper)