| Introduction | p. 1 |
| High-Level Programming Languages | p. 1 |
| Implementation of Programming Languages | p. 2 |
| Interpreters | p. 2 |
| Compilers | p. 3 |
| Real and Virtual Machines | p. 4 |
| Combined Compilation and Interpretation | p. 4 |
| General References | p. 5 |
| Imperative Programming Languages | p. 7 |
| Language Concepts and Their Compilation | p. 7 |
| The Architecture of the C-Machine | p. 8 |
| Simple Expressions and Assignments | p. 9 |
| Statements and Statement Sequences | p. 15 |
| Conditional and Iterative Statements | p. 16 |
| Memory Allocation for Variables of Basic Types | p. 22 |
| Memory Allocation for Arrays and Structures | p. 23 |
| Pointers and Dynamic Memory Allocation | p. 27 |
| Functions | p. 32 |
| Memory Organization of the C-Machine | p. 35 |
| Dealing with Local Variables | p. 37 |
| Function Call and Return | p. 40 |
| Translation of Programs | p. 45 |
| Exercises | p. 48 |
| List of CMA Registers | p. 55 |
| List of Code Functions of the CMA | p. 55 |
| List of CMA Instructions | p. 55 |
| References | p. 55 |
| Functional Programming Languages | p. 57 |
| Basic Concepts and Introductory Examples | p. 57 |
| A Simple Functional Programming Language | p. 59 |
| The Architecture of the MAMA | p. 63 |
| Translation of Simple Expressions | p. 66 |
| Access to Variables | p. 68 |
| let Expressions | p. 73 |
| Function Definitions | p. 74 |
| Function Application | p. 76 |
| Under- and Oversupply with Arguments | p. 80 |
| Recursive Variable Definitions | p. 83 |
| Closures and Their Evaluation | p. 86 |
| Optimization I: Global Variables | p. 89 |
| Optimization II: Closures | p. 90 |
| Translating Program Expressions | p. 91 |
| Structured Data | p. 92 |
| Tuples | p. 92 |
| Lists | p. 93 |
| Closures for Tuples and Lists | p. 96 |
| Optimization III: Last Calls | p. 97 |
| Exercises | p. 99 |
| List of MAMA Registers | p. 103 |
| List of Code Functions of the MAMA | p. 103 |
| List of MAMA Instructions | p. 104 |
| References | p. 104 |
| Logic Programming Languages | p. 105 |
| The Language PROL | p. 105 |
| The Architecture of the WIM | p. 108 |
| Allocation of Terms in the Heap | p. 109 |
| The Translation of Literals | p. 114 |
| Unification | p. 115 |
| Clauses | p. 126 |
| The Translation of Predicates | p. 127 |
| Backtracking | p. 127 |
| Putting It All Together | p. 130 |
| The Finalization of Clauses | p. 131 |
| Queries and Programs | p. 134 |
| Optimization I: Last Goals | p. 135 |
| Optimization II: Trimming of Stack Frames | p. 138 |
| Optimization III: Clause Indexing | p. 140 |
| Extension: The Cut Operator | p. 142 |
| Digression: Garbage Collection | p. 144 |
| Exercises | p. 149 |
| List of WIM Registers | p. 152 |
| List of Code Functions of the WIM | p. 152 |
| List of WIM Instructions | p. 152 |
| References | p. 153 |
| Object-Oriented Programming Languages | p. 155 |
| Concepts of Object-Oriented Languages | p. 155 |
| Objects | p. 155 |
| Object Classes | p. 156 |
| Inheritance | p. 157 |
| Genericity | p. 158 |
| Information Encapsulation | p. 158 |
| Summary | p. 159 |
| An Object-Oriented Extension of C | p. 159 |
| The Memory Organization for Objects | p. 160 |
| Method Calls | p. 163 |
| The Definition of Methods | p. 165 |
| The Use of Constructors | p. 166 |
| The Definition of Constructors | p. 168 |
| Perspective: Multiple Inheritance | p. 169 |
| Exercises | p. 7l |
| List of Additional Registers | p. 177 |
| CMa Instructions for Objects | p. 177 |
| References | p. 177 |
| References | p. 179 |
| Index | p. 183 |
| Table of Contents provided by Ingram. All Rights Reserved. |