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 | ||
|