CS326 - Project 5 : Everything

Due Date: Wednesday, May 30, 11:59 p.m.

Well, this is the final part of the compiler project. Your primary objective is to get everything working and to clean up your compiler as much as possible.

For final grading, we will run ALL of the tests for all stages of the project using the corresponding test1.py, test2.py, test3.py, or test4.py scripts.

Code generation

Continue with the code generation from Project 4. If you had most of project 4 working, there is very little to do at this point:
  1. Get nested functions to work. To do this, you will need to use a display or some other technique to access non-local scopes.

  2. Make sure tricky things like large arrays, passing array parameters, and passing many function arguments work.

  3. We have decided to drop floating point support from the project. We get the sense that everyone could use the extra time to get caught up. Besides, Ian and I are both too tired to think up more evil tests for this.

Optimization

Assuming that your compiler works at all (and we certainly hope that it does), take any steps that you feel are appropriate to optimize the generated assembly code. We will run all of the compilers in a head-to-head competition to see which one produces the fastest running object code. Of course, the winner will receive a fabulous prize (e.g., getting to be the TA for OS or something :-).

If you are too worn out to even think about optimizing anything, feel free to do nothing. There will be no point deduction as long as the code produced by your compiler runs and produces the correct output in some reasonably finite amount of time.

Handin procedures

  1. Your compiler must be runnable from a file 'flame.py'. We must be able to run this file as follows:
    % python flame.py testname.flm
    % a.out
    

  2. Make sure you have a README file that includes your name and anything notable about your implementation.

  3. Create a Unix tar file for your project. This tar file should contain the 'flame' directory and be based on your login name. For example:
    % tar -cf yourlogin.tar flame
    

  4. On classes.cs.uchicago.edu, copy your tar file to the directory /stage/classes/current/CS326/handin/project5 For example:
    % cp yourlogin.tar /stage/classes/current/CS326/handin/project5
    

  5. Late assignments are not accepted. The handin directory will be closed after the due date.
IF WE CAN NOT UNPACK OR RUN YOUR HANDIN USING THE SUPPLIED TEST SCRIPTS, YOU WILL RECEIVE NO CREDIT!