CS577 Modern Language Processors Spring 2008
Course Information
Exam
Homework
Lectures
- April 1,3: Introduction; Java Virtual Machine Architecture (pdf) (4up pdf)
- April 8,10: Efficient Interpretation (pdf) (4up pdf)
- April 15: Quick Compilation (pdf)
- April 17: Sparc Architecture (Guest lecture by Jingke Li) (pdf)
- April 22,24,29: Basic Optimization (pdf) (4up pdf) (updated 4/30/08 6pm)
- May 1: Optimization of Memory Operations (pdf) (4up pdf)
- May 6,8: Register Allocation (pdf) (4up pdf)
- May 13,15: Compiling object-oriented features (rough notes)
- May 20,22: Garbage Collection (pdf) (4up pdf)
Required Readings
- April 8: Shi, Gregg, Beatty, Ertl, Virtual Machine Showdown:Stack Versus Registers, VEE'05
(pdf).
- April 29: Wolfram Amme, et al., SafeTSA: A Type Safe and Referentially Secure Mobile-Code Representation Based on Static Single Assignment Form, PLDI 2001
(ACM library).
- April 29:
Daniel Scales, et al., The Swift Java Compiler: Design and Implementation, Compaq WRL Research Report 2000/2
(pdf).
- May 13:
B. Alpern, et al., The Jalapeno Virtual Machine, IBM Systems Journal, Vol 39, No. 1, Nov 2000
(pdf).
- May 13:
Trishul Chilimbi, Mark Hill, and James Larus, Cache-Conscious Data Structures, IEEE Computer, Dec. 2000
(pdf).
- May 20:
Paul Wilson, Uniprocessor Garbage Collection Techniques, IWMM, 1992
(ps).
- June 3:
Greg Morrisett, et al., TALx86: A Realistic Typed Assembly Language Proc. 1999 ACM SIGPLAN Workshop on Compiler Support for System Software
(pdf).
Optional Readings
- April 8
-
M. Anton Ertl,Stack Caching for Interpreters,
PLDI 1995.
-
Ertl and Gregg, Optimizing Indirect Branch Prediction Accuracy in Virtual Machine Interpreters, PLDI 2003.
-
Berndl,Vitale,Zaleski,Brown, Context Threading:A flexible and efficient dispatch technique for virtual machine interpreters,CGO-4, 2005.
-
I Piumarta and F. Riccardi, Optimizing direct threaded code by selective inlining, PLDI 1998.
- April 15
- May 15
- May 20
- May 22
JVM Reference
- Tim Lindholm & Frank Yellin, The Java Virtual Machine Specification, 2nd ed., happily available on-line
Java Implementations and Tools
-
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 must use Java1.5.
A free implementation for linux or Windows is available from
Sun, and for Macintosh
from Apple.
This is also the version available by default on the CS dept. solaris machines.
- Jikes is an alternative Java 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.
Sparc Resources
Other Useful Reading Material
- Books,etc.about Java
-
The official Java Language Specification, 3rd ed. is available on-line or can be purchased as a book.
-
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., Prentice-Hall, 2007.
The 3rd edition of this book is available free on the web from here,
but note that it only describes Java 1.4.
- There are also many tutorials on the net, such as
Sun's own tutorial.
- 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.
- Joshua Engel,Progrmamming for the Java Virtual Machine, Addison-Wesley, 1999.
- John Gough,Compiling for the .NET Common Language Runtime, Prentice Hall PTR, 2001.
- 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.
- General Books on Compilers
- Kieth Cooper and Linda Torczon, Engineering a Compiler, Morgan Kaufmann, 2004.
- 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.
- Books on Garbage Collection
- Richard Jones and Rafael Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Wiley, 1996.
JVM Implementations with Source-Code