The project includes the following compulsory parts:
For the competition, only optimisations which are reasonable are
permitted, which in principle only excludes solutions which would
waste enourmous amounts of memory during execution of the optimized
program.
Up to 30000 memory words is OK.
There is no deadline for the project but to participate in the competition, there is a
deadline of mailing me a zip or tar file with your vcc compiler: Saturday, March 11 at 18.00 (Swedish time zone).
You are allowed to change anything except the simulator in vcc.
The base project code (a non-optimizing C subset compiler) is provided in C. If you would like to use a different language, you are encouraged to translate the base code to another language including Ada, Clojure, C++, Fortran, Haskell, Java, Lisp, Objective-C, POWER assembler, Prolog, Rust, Scala, Scheme, Simula, Smalltalk, or SPARC assembler. You need to ask for permission to use other languages.
If you are interested in increasing your grade one step (from 3 or 4), you can implement for instance graph colouring register allocation, or one of the following algorithms on SSA form: operator strength reduction, global value numbering, or partial redundancy elimination.