CS577 Compiler Construction (Modern Language Processors) Spring 2002
Course Information
New Schedule Information
- Reminder: No class on Monday, May 27 (Memorial Day Holiday).
- Homework 2 is due in class on Wednesday, May 29.
- Projects will be due in the instructor's office or mailbox at noon on Friday, June 14.
- The take-home final will be handed out on Wed. June 5 in class, and will be due at 12:30 pm
on Wed. June 12 (the start of the final exam slot). The final may ask about anything covered
in lecture or in the assigned papers.
- Project presentations will be during class on June 5 and during the final exam slot on June 12.
Presentations should aim to be about 20 minutes; if you think you'll need longer, consult with
the instructor.
Benchmarks
The single most useful set of meaningful benchmarks available for free is
from the Java Grande Forum.
Users on the CS Solaris network can access the source and .class files in
directory /u/apt/jgf/v2.0. These benchmarks are biased towards floating point array
computations. I'd recommend running a combination of floating point and integer
benchmarks, including some that create lots of objects, from sections 2 and 3.
Good possibilities include raytracer, heapsort, and crypt. Note that some of
the benchmarks run a long time, even in the smallest ("A") size; be kind to
your fellow users if running these on a shared machine.
Homework
Homework 1 (due 4/17/02) (postscript) (pdf)
BCEL .jar file Documentation Source
example.java example.class
Homework 2 (due 5/29/02) (postscript) (pdf)
compile.java (REVISED ONCE MORE 3 June 12 noon. Fixes a minor bug in stack heights.)
Sample solution: compile1.java
BCEL .jar file Documentation Source
SPIM Simulator Homepage. The simulator is
installed in the CS Solaris network in directory /u/apt/spim/bin.
Readings
-
Read for April 3:
-
James Gosling, Oak Intermediate Bytecodes,
ACM SIGPLAN Workshop on Intermediate Representations, 1995.
-
Lindholm & Yellin,The Java Virtual Machine Specification, 2nd ed.,
Chapter 2 (read lightly).
-
If you are unfamiliar with Java, skim a good introductory textbook, such as
Arnold, Gosling, and Holmes, The Java Programming Language, Addison-Wesley.
-
Read for April 10:
-
Read for April 17:
-
Read for April 22:
-
Read for April 24:
- Read for May 20:
- Read for May 22:
- Read for May 29:
- Read for June 3:
Lecture Materials
Useful Resources
- JVM Implementations with sourcecode
- Books about Java Bytecode
- Tim Lindholm & Frank Yellin, The Java Virtual Machine Specification, 2nd ed., happily available on-line
- 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.
- General Books on Compilers
- Al Aho, Ravi Sethi, and Jeff Ullman, Compilers: Principles, Tools, and Techniques, Addison-Wesley, 1986.
- Andrew Appel, Modern Compiler Implementation in ML/Java/C, Cambridge UP, 1998.
- Steve Muchnick, Advanced Compiler Design & Implmentation, Morgan Kaufmann, 1997.
- Christopher Fraser and David Hanson,A Retargetable C Compiler: Design and Implementation, Benjamin/Cummings, 1995.
- Books on Garbage Collection
- Richard Jones and Rafael Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Wiley, 1996.