Links and Reference Materials

Appel's book Modern Compiler Implementation in Java (second edition), is a likely candidate for a guideline for our new IR. It also leads directly into some of the analysis techniques that we will want to get into, including the use of SSA form (see below). The MiniJava project source code, especially the "Tree" package, may be a useful starting point.

Static Single Assignment form is an IR form which is ideal for the kinds of flow analysis that we want to perform.

Parrot is a virtual machine project, which is intended to become the virtual machine for Perl version 6, as well as be a viable virtual machine as a target for many other languages. Some of that project's documentation may be of interest to us, as they also have plans for providing an IR for compiler writers.

phc is a project to build a compiler with native Linux binaries (x86) as its target. Although its target is of no interest to us, some of the parallels between that project and some of our own projects are interesting. Their list of spinoffs looks like our marketing pages for Proparse. :) Note, especially, that "semantic checker" is just another term for "lint". Their whatsinstore page dives right into IR and what they plan to do with it. They plan to design their own IR, which may or may not be of interest to us. See this post in their mailing list for their motivation.

The Gnu Compiler Collection uses a tree SSA intermediate form for their compilers. This would be of a lot of interest to us, if it wasn't for the GPL. Anything we do here will have to be business friendly. Er, let me rephrase that. Anything *I* do here will be business friendly. Others, of course, are welcome to use these efforts here for playing with GCC as a target if they want. :)