| Date | Lectures | Slides | Notes |
|---|---|---|---|
|
|
|||
| April 2 (Tue) | Lecture 1: Introduction to the project and the Java bytecode format | Class overview |
Wiki: The class File Format
Java SE Specification - The class File Format |
| April 4 (Thurs) | No lecture -- working on the project | ||
|
|
|||
| April 9 (Tue) | Lecture 2: What is a Java bytecode interpreter and how to implement it? | Java Bytecode Interpreter |
The Java Virtual Machine Instruction Set
Wiki: Java bytecode instruction listing |
| April 11 (Thurs) | No lecture -- working on the project | ||
|
|
|||
| April 16 (Tue) | Lecture 3: Single-static assignment (SSA) form | Building SSA |
Dominance Tree Algorithm (Algorithm 2)
Further reading: Java Bytecode Verification via Static Single Assignment Form |
| April 18 (Thurs) | No lecture -- working on the project | ||
| April 23 (Tue) | No lecture -- working on the project | ||
| April 25 (Thurs) | No lecture -- working on the project | ||
|
|
|||
| April 30 (Tue) | Lecture 4: Constant propogation and other SSA-based optimizations | SSA-based Compiler Optimizations | Wegman and Zadeck, Constant propagation with conditional branches (ACM TOPLAS 1991) |
| May 2 (Thurs) | No lecture -- working on the project | ||
| May 7 (Tue) | No lecture -- working on the project | ||
| May 9 (Thurs) | No lecture -- working on the project | ||
|
|
|||
| May 14 (Tue) | Lecture 5: Liveness analysis and register allocation | Register Allocation Using Graph Coloring |
X86 Registers Register Allocation via Coloring Linear Scan Register Allocation on SSA Form |
| May 16 (Thurs) | No lecture -- working on the project | ||
| May 21 (Tue) | No lecture -- working on the project | ||
| May 23 (Thurs) | No lecture -- working on the project | ||
|
|
|||
| May 28 (Tue) | Lecture 6: x86 machine code generation | x86 machine code generation | Intel 64 and IA-32 Architectures Software Developer's Manual x86 calling conventions Blog: A Beginners' Guide to x86-64 Instruction Encoding (Windows) HeapAlloc function (Linux) mmap, munmap - map or unmap files or devices into memory |
| May 30 (Thurs) | No lecture -- working on the project | ||
|
|
|||
| Jun 4 (Tue) | Lecture 7: Security of language virtual machines | ||
| Jun 6 (Thurs) | No lecture -- working on the project | ||
|
|
|||