09/10/2019 Assignment 3 Description: Computer Systems (2000_7081 Combined)
https://myuni.adelaide.edu.au/courses/44936/pages/assignment-3-description 1/5
Assignment 3 Description
Assignment 3 - Jack Compiler
Weighting and Due Dates
Marks for this assignment contribute 15% of the overall course mark.
Marks for functionality will be awarded automatically by the web submission system.
Due dates: Milestone - 11:55pm Friday of week 11, Final - 11:55pm Friday of week 12.
Late penalties: For each part, the maximum mark awarded will be reduced by 25% per day / part
day late. If your mark is greater than the maximum, it will be reduced to the maximum.
Core Body of Knowledge (CBOK) Areas: abstraction, design, hardware and software, data and
information, and programming.
Project Description
In this assignment you will complete a variation of projects 10 and 11 in the nand2tetris course, reworked
descriptions of Nand2Tetris Projects 10 and 11 are shown below. In particular, you will write the
following programs that are used to implement different components of an optimising Jack compiler that
compiles a Jack class into Hack Virtual Machine (VM) code:
parser - this parses a Jack program and constructs an abstract syntax tree.
codegen - this takes an abstract syntax tree and outputs equivalent VM code.
pretty - this takes an abstract syntax tree and produces a carefully formatted Jack program.
optimiser-e* - this copies an abstract syntax tree and pre-evaluates expressions where possible.
optimiser-r^ - this copies an abstract syntax tree and removes redundant code.
SVN Repository
You must create a directory in your svn repository named://cs/assignment3. This
directory may only contain the following files and sub-directories - the web submission system
(https://cs.adelaide.edu.au/services/websubmission) will check this:
Makefile - this file is used by make to compile your submission - do not modify this file.
.cpp C++ source files - naming as specified below.
.h C++ include files - naming as specified below.
lib - this directory contains precompiled programs and components - do not modify this directory.
includes - this directory contains .h files for precompiled classes - do not modify this directory.
tests - this directory contains a test script and test data, you can add your own tests too.
parser - your implementation of the parser program.
codegen - a script to run your codegen program.
pretty - a script to run your pretty program.
optimiser-e - a script to run your optimiser-e program*.
optimiser-r - a script to run your optimiser-r program^.
Notes:
09/10/2019 Assignment 3 Description: Computer Systems (2000_7081 Combined)
www.9daixie.com
https://myuni.adelaide.edu.au/courses/44936/pages/assignment-3-description 2/5
if the liblib.a
% svn commit -m adding-missing-libraries
if the real executable programs are added to your svn repository you will need to explicitly remove
them and make another commit:
% svn rm libcodegen liboptimiser-e lib/*/optimiser-r
% svn commit -m removing-executables
Notes:
*only for students enrolled in the undergraduate offering, COMP SCI 2000.
^only for students enrolled in the postgraduate offering, COMP SCI 7081.
因為專業(yè),所以值得信賴。如有需要,請加QQ:99515681 或郵箱:99515681@qq.com
微信:codehelp