CS 343
Advanced Topics in Compilers - Spring 2014
Compiler research for a long time was moribund, stuck on narrow
topics such as register allocation and instruction scheduling. In
contrast, the last decade has seen an explosion of interesting work
using compilers to accomplish something cool. This class will cover a
selection of such research papers, ranging across static and dynamic bug
finding, binary analysis, reverse engineering, programming via
sketching, and other topics that seem worth knowing.
The class is discussion oriented. You will read (typically) one paper
before each class thoroughly, which will be dissected during the class
period. By the end of the course you will be able to read a technical
paper and extract its essence as well as noticing when the authors have
sinned by omission in their experiments or wording. A good paper along
these lines is here.
Papers will be somewhat bimodal. We will often start with an older
one to set the stage (since they are simpler), and then a later one so
you can see what the current thinking is.
Previous offerings:
Class
- Tue, Thu 11-12:15 in 380-381U
- Prerequisites: cs243, or permission from instructor
Instructor
- Dawson Engler
- Website: http://cs.stanford.edu/~engler/
- Office: Gates 314
- Office hours: Wed 1pm-4pm
April 1 (Tue)
Dynamic Analysis Tools
April 3 (Thu)
April 8 (Tue)
April 10 (Thu)
- Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation, Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood
- Annotated copy.
- Example PIN tool: cache simulator (dcache.cpp, dcache.H)
- Optional: Pin User Manual
-
- Comment: much, much simpler to write tools than Valgrind, but handles fewer corner cases.
-
April 15 (Tue)
- Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation,
Nicholas Nethercote and Julian Seward
- Example tool: Lackey (Unfortunate that writing a trivial tool is so complicated.)
Optimizing JITs
April 17 (Thu)
April 22 (Tue)
Dynamic Code Generation
April 24 (Thu)
- A Comparison of Software and Hardware Techniques for x86 Virtualization
Adams and Agesen
April 29 (Tue)
May 1 (Thu) - Midterm Exam
- The midterm exam covers all papers up until today.)
- Midterm from Spring 2011
Cool Hacks
May 6 (Tue)
- Enhancing Server Availability and Security Through Failure-Oblivious Computing,
Martin Rinard, Cristian Cadar, Daniel Dumitran, Daniel M. Roy,
Tudor Leu, and William S. Beebee, Jr.
May 8 (Thu)
May 13 (Tues)
May 15 (Thu)
May 20 (Tue)
- A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World ,
Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler
- Slides
May 22 (Thu)
May 27 (Tue)
May 29 (Thu)
June 3 (Tue)