Spring 2023 Course Descriptions

CS 106-01 Virtual Machines & Language Translation

N. Ramsey
TR 1:30-2:45, Joyce Cummings Center 240
H+ Block

Translation of high-level, functional programming languages to virtual-machine code. Design and implementation of register-based virtual machines and instruction sets. Bytecode interpretation. Function calls including optimized tail calls. Virtual assembly language, virtual object code, and code loading. Automated memory management (garbage collection). Functional-programming techniques for translation. Composition of translation passes using an error monad. Parsing and unparsing. Parsing combinators. Translation of higher-order functions via closure conversion. Naive register allocation by reduction to K-normal form. Code generation from K-normal form to virtual assembly language. Lightweight benchmarking.


Back to Main Courses Page