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:
- Get nested functions to work. To do this, you will need to use a
display or some other technique to access non-local scopes.
- Make sure tricky things like large arrays, passing array parameters, and
passing many function arguments work.
- 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
-
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
-
Make sure you have a README file that includes your name and anything notable about your implementation.
-
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
- 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
- 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!