CS577/677 Modern Language Processors Spring 2018
Course Information
Project/Paper Guidelines
Schedule and Assignments
- Apr 3: Introduction
- Apr 5 & 10: Compiler and Interpreter Architecture; the Java Virtual Machine (pdf slides)
- Apr 12 & 17: Compilation challenges for Modern Languages
- Apr 19 & 24: Compilation challenges from Hardware
- Reading
-
Trishul Chilimbi, Mark Hill, and James Larus, Making pointer-based data structures cache conscious, IEEE Computer 33(12), Dec. 2000
-
Mytkowicz, Diwan, Hawwirth, Sweeney, Producing Wrong Data Without Doing Anything Obviously Wrong!, ASPLOS09
- Homework 3 (due Apr 24)
- Apr 26 & May 1: Efficient Interpretation (pdf slides)
and Quick Compilation (rough notes)
- May 3 & 8: Basic Compiler Optimizations and SSA; Dataflow Analysis (pdf slides)
- May 10 : Garbage Collection (pdf slides)
- May 24 & 29: Liveness Analysis (pdf slides); Memory-based optimizations (pdf slides)
Rpython
- Reading
- No homework, but please come prepared to discuss the reading.
- May 31 and June 5: Correctness and verification (pdf slides) (Coq document) (executable Coq script)
- Reading
- No homework, but please come prepared to discuss the reading.
JVM Reference
- Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley, The Java Virtual Machine Specification, Java SE 8 ed., happily available online.
Java Implementations and Tools
-
For some homeworks, you'll need javac to generate byte code and a JVM (java) to run
the generated code for comparison with our interpreters. To make sure we all see
consistent behavior, you should use Java 8.
A free implementation of Java 8 for linux, MacOS, or Windows is available
here.
It is also available on the CS dept. linuxlab machines, by doing addpkg java8.
- Jikes is an alternative Java 1.4 front-end from IBM
that produces somewhat different byte-code than Sun's.
- Jasmin is stand-alone
assembler for Java bytecodes; you may find it useful for constructing
bytecode programs without writing Java sourcecode.
Other Useful Reading Material
- Books,etc.about Java
-
The official Java Language Specification, Java SE8 edition.
-
Documentation for Sun's Java tools is here.
- The standard Java library (API) is documented here.
-
Ken Arnold, James Gosling, and David Holmes, The Java Programming Language, 4th ed., Addison--Wesley, 2005.
(earlier editions are also fine).
-
Bruce Eckel, Thinking in Java, 4th ed. is available free
on the web; it describes Java 5/6. A revision for Java 8 is available as an ebook only.
- There are also many tutorials on the net, such as
these.
- Books about Java Bytecode and .NET
- Bill Venners, Inside the Java 2 Virtual Machine, McGraw-Hill, 1999.
Substantial portions of this book are also available
on-line. This is probably the best book to look at first.
- Jon Meyer & Troy Downing, Java Virtual Machine, O'Reilly 1997. This is available from the PSU library
as an ebook (must be on the PSU network or VPN).
- Joshua Engel, Progrmamming for the Java Virtual Machine, Addison-Wesley, 1999.
- John Gough, Compiling for the .NET Common Language Runtime, Prentice Hall PTR, 2001.
- General Books on Compilers
- Keith Cooper and Linda Torczon, Engineering a Compiler 2nd ed., Morgan Kaufmann, 2012. (First edition is almost identical.)
- Al Aho, Monica Lam, Ravi Sethi, and Jeff Ullman, Compilers: Principles, Techniques, and Tools, 2nd ed. , Addison-Wesley, 2006.
- Steve Muchnick, Advanced Compiler Design & Implmentation, Morgan Kaufmann, 1997.
- Christopher Fraser and David Hanson, A Retargetable C Compiler: Design and Implementation, Benjamin/Cummings, 1995.
- Andrew Appel, Modern Compiler Implementation in Java, 2nd ed., Cambridge UP, 2002. (Or earlier editions;
be careful to check errata on author's web page.)
- Randy Allen and Ken Kennedy, Optimizing Compilers for Modern Architectures, Morgan Kaufmann, 2002.
- Robert Morgan, Building an Optimizing Compiler, Digital Press, 1998.
- Torben Mogensen, Basics of Compiler Design, 2010. (Freely available on-line.)
- Books on Garbage Collection
- Richard Jones, Antony Hosking, and Eliot Moss, The Garbage Collection Handbook, Chapman & Hall/CRC, 2011.
- Richard Jones and Rafael Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Wiley, 1996.
- Books on Virtual Machines
- Jim Smith and Ravi Nair, Virtual Machines: Versatile Platforms for Systems and Processes,
Morgan Kauffman, 2005.
- Iain D. Craig, Virtual Machines, Springer, 2005.
JVM Implementations with Source-Code