This page always under construction. Links to useful resources are welcome.
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.
The following documents will help you fathom the depths of machine-level programming on x86-64 machines.
The following are for the older Intel x86 architectures. See the newer references above for the x86-64 (also known as IA32-EM64T).
LLVM is a potential second target for the compiler for Lab 6
Writing a garbage collector for C0 is one of the interesting options for Lab 6
For Fall 2015 we strongly discourage the use of Scala due to efficiency issues.