Spring 2018, CS 142 (b) Schedule

Date

Lectures

Presentation Slides

Notes

Week 1. Parsing bytecode

April 3 (Tue)

Lecture 1: Overview of the project and introduction of the .class file layout

Class overview

The class file format

April 5 (Thur)

No lecture -- working on the project

 

 

Week 2-3. Building a Java interpreter

April 10 (Tue)

Lecture 2: What is a Java interpreter and how to implement it?

Building a Java interpreter

Java bytecode instruction listing

April 12 (Thur)

No lecture -- working on the project

 

 

April 17 (Tue)

No lecture -- working on the project

 

 

April 19 (Thur)

No lecture -- working on the project

 

 

Week 4- 5. Building SSA

April 24 (Tue)

Lecture 3: What is SSA and how to compute it?

Building an SSA intermediate representation

SSA form

Cytron et al. TOPLAS paper

April 26 (Thur)

No lecture -- working on the project

May 1 (Tue)

No lecture -- working on the project

 

 

May 3 (Thurs)

No lecture -- working on the project

 

 

Week 6-7. Developing SSA-based optimizations

May 8 (Tue)

Lecture 4: Dataflow optimization I --- liveness analysis and register allocation

Register allocation

X86 registers

Register allocation via coloring

A good summary of register allocation techniques

May 11 (Thurs)

No lecture -- working on the project

 

 

May 15 (Tue)

Lecture 5: Dataflow optimization II --- constant propagation (by Kai)

Constant propagation

 

May 17 (Thurs)

No lecture -- working on the project

 

Week 8-9. Generating X86 machine code

May 22 (Tue)

Lecture 6: Assembler (by Kai)

Code generation

  Intel Software Developer’s Manual  

May 24 (Thurs)

No lecture -- working on the project

 

 

May 29 (Tue)

No lecture -- working on the project

 

 

May 31 (Thurs)

No lecture -- working on the project

 

 

Week 10. Project Demo Week

June 5 (Tue)

Project Demo (I)

 

 

June 7 (Thurs)

Project Demo (II)