15-411 Compiler Design
Resources

This page always under construction. Links to useful resources are welcome.

Source Language: C0

The labs use increasingly more complete subsets of the C0 programming language that has been designed for 15-122 Principles of Imperative Computation, a freshman-level course at Carnegie Mellon University. C0 is a small safe subset of C with an unambiguous semantics. You are strongly encourage to learn C0, since you will be writing a compiler for this language.

Target Languages and Tools

x86-64 Machine-Level Programming

The following documents will help you fathom the depths of machine-level programming on the new x86-64 machines, a 64-bit extension of the Intel instruction set.

IA32 and Assembler Reference Material

The following are for the older Intel x86 architectures. See the newer references above for the x86-64 (also known as IA32-EM64T).

GDB

LLVM

LLVM is a potential second target for the compiler for Lab 6

Garbage Collection

Writing a garbage collector for C0 is one of the interesting options for Lab 6

Implementation Languages

Standard ML

Java

  • Java API
  • JLex: lexer generator
  • JFLex: lexer generator
  • CUP: LALR parser generator
  • ANTLR: lexer and LL parser generator
  • JavaCC: lexer and LL parser generator

Haskell

Scala

For Fall 2014, we strongly discourage the use of Scala due to efficiency issues explained in lecture.

OCaml

F#

Prior Course Instances


[ Home | Schedule | Labs & Assignments | Resources ]
[ Autolab | Piazza ]

fp@cs
Frank Pfenning