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
- Standard ML of New Jersey (SML/NJ)
- MLton,
A highly optimizing, whole program compiler mostly compatible with SML/NJ
- Poly/ML,
Another high quality compiler
- Standard ML Libraries and Documentation
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
|