Spring 2019, CS 142B Schedule

Date Lectures Slides Notes
Week 1. Parsing bytecode
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
Week 2. Building a Java bytecode interpreter
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
Week 3-4. Single-static assignment (SSA)
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
Week 5-6. Developing SSA-based optimizations
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
Week 7-8. Register allocation
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
Week 9. x86 machine code generation
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
Week 10. Advanced Topic - Security
Jun 4 (Tue) Lecture 7: Security of language virtual machines
Jun 6 (Thurs) No lecture -- working on the project
Final Week (Jun 8 ~ Jun 13) - Project Demo