|
Fall 2005 Programming Language Seminar: |
|
| Synopsis | Information | Calendar | Links |
Synopsis:
The GNU Compiler Collection (GCC) is a widely popular optimizing
compiler for a number of architectures that supports C, C++, Java,
Objective C, FORTRAN, and Ada.
This seminar will be an examination of how GCC works under the hood. At each meeting, we will walk through parts of the GCC source tree and try to make sense of them. In particular, we will focus on changes to the Java front-end and library required to make them a suitable real-time Java platform. We'll also investigate how optimization passes are coded, how the Boehm garbage collector operates, and the requisite GCC basics like the build system, the tree-based intermediate representations, structure of front-ends and back-ends, etc. Other topics of interest to the seminar attendees will also be explored.
Many researchers are intimidated by GCC's size, initial learning curve, and the fact that its structure isn't that of a clean textbook compiler. However, GCC is a good fit for many research implementations in the area of compilation, languages, and runtime systems, and its full support of language features and numerous back-ends make it attractive for many projects. The purpose of this seminar is to demystify GCC so that it can be used as a basis for research and experimentation.
We will be using the most recent version of the GCC compiler suite, which is (at the time of writing) 4.0.1. We'll probably also be peeking at 4.1 development work.
|
* You pass the seminar by attending and participating. |
Seminar Calendar:
The Fall 2005 programming language seminar meets Mondays at
1:00pm in Lopata 400.
| Date | Topic | Discussion Leader | Notes & Materials |
|---|---|---|---|
| 5 September | Labor Day: no seminar | ||
| 12 September | Organizational Meeting how to obtain and build gcc, source tree layout, gcc basic features... |
Morgan Deters | Notes |
| 19 September | Front-end essentials gcc/g++/gcj drivers and cpp/cc1/jc1/collect2/etc, front-end specification, parsing intro... |
Morgan Deters | Notes |
| 26 September | GENERIC intermediate representation I all about trees, tree types, decls, lists, WFLs, expressions... |
Delvin Defoe | Notes |
| 3 October | GENERIC intermediate representation II debugging trees, in-depth study of both Java front-ends, name lookup, runtime check emission, conversion to GIMPLE... |
Morgan Deters | (partial) |
| 10 October | - Seminar Cancelled - | ||
| 17 October | Optimization engine I static single assignment conversion and maintenance, what happens at different -O levels, dead store elimination walk-through... |
Rob LeGrand | Notes |
| 24 October | Optimization engine II sparse conditional constant propagation walk-through... |
Bob Zimmermann | (partial) |
| 31 October | Register Transfer Language (RTL) RTL conversion, passes over RTL... |
Kevin Klues | (partial) |
| 7 November | Code generation machine descriptions, register allocation, instruction selection... |
Greg Hackmann | ... |
| 14 November | Runtime support I object layout, method invocation (vtables), runtime checks, standard libraries... |
Justin Thiel | Notes Final project |
| 21 November | - Thanksgiving - | ||
| 28 November | Debugging support all about how debugging/profiling/coverage analysis works... |
Rob Klapper | ... |
| 5 December | Runtime support II profiling support in glibc, the Boehm collector, crt stuff |
Morgan Deters | Notes |
| 12 December | Final project discussions final projects discussed, changes to expect in GCC's future, dynamic linker, wrap up... (be prepared to say a few words about what you've done with GCC, any pitfalls you've run across, any interesting findings, etc.) |
(agenda) | |
Make sure to copy anything out of /usr/share/cse7201
that you want to keep!Our directories will be removed from the lab machines after the semester is over... |
|||
Looking for something else?