The goal of milestone 7 is to produce a compiler for the R5 language, including lexically scoped functions.
Here’s the general breakdown of the points, as in earlier assignments:
R1 language, including register allocation: 12 points
booleans and conditionals: 7 points
vector allocation, ref, mutation: 2 points
Garbage Collection: 2 point
Function Calls: 2 points
Tail Calling: 1 point
Lexically Scoped Functions: 1 point
Here’s a bundle containing test cases:
Your code should be finished and checked into github some time on Monday. Don’t make any changes to your code after Monday.
Your code should include a "README" file that describes how to compile the code. Don’t forget to include a list of any software that needs to be installed before compiling.
After compiling, it should be possible to compile a single source file by running
This should generate two files: "output.s", containing the assembly that you generated, and an executable file named either "a.out" or "a.exe", depending on whether you’re running on MacOS/Linux or Windows.
Your "blungentle" file can be either a script or an executable, whatever makes more sense for your program. It is not necessary to make this file relocatable; it’s okay for it to depend on the file’s location.
It should be possible to run this file from another directory, so if for instance I am in the directory "/tmp/" and your project is in "/Users/zemelda/431", I should be able to run
... and the two output files should be generated in the current directory. Post to piazza if you have any questions about how to get the directories to work out correctly here.
As we discussed in class, we’re going to run demos from 10:00 AM until 11:00 AM on Wednesday, December 11th, in the Lecture room. You should be prepared with a script that runs all tests, along with the ability to compile individual test programs.