Systems Programming
University at Albany
Department of Computer Science
CSI 402 – Spring 2019
Programming Assignment 2
Objective
The primary goal of this assignment is to develop an interpreter for a subset of the AMB abstract machine. A secondary goal is to develop the skills required for working as part of a team.
What to Do
Semi-formal specification
You are to provide a software design for an interpreter for a subset of the ABM abstract machine. Your design solution must be structured as a set of modules. The specification of each module must be provided by means of the Textual Design Notation (TDN). A graph of the USES relation for your expression evaluator must also be provided.
The interpreter
You are to develop an interpreter for a subset of the ABM abstract machine. The subset of instructions will include all Arithmetic, Logical, Relational Operators, and Output. It must also include push, pop, and rvalue Stack manipulation instructions, and the halt instruction. The abm-instruction-setpdfVersion.pdf document contains a list of all instructions supported by the ABM abstract machine. Your solution must be based on the Design solution you created. You are to use the Linux operating system and the C programming language. You may work by yourself or with partner, but you are not allowed to change your partner once one is selected.
Testing
You may use the file operatorsTest.abm file for testing your initial prototype.
Due Date
Due by 11:59 PM on Thursday, February 28th, 2019.
Documentation
Your program should be developed using GNU versions of the C compiler running on any Linux distribution. It should be layered, modularized and well commented. The following is a tentative marking scheme and what is expected to be submitted.
External Documentation including as many pages as necessary to fulfill the requirements listed below.
title page
a table of contents
[25%] system documentation
– a graph of the USES relation
– a TDN for each module defined in the USES relation
– implementation details including information such as data structures and algorithms used.
[5%] test documentation
– how you tested your program
– testing inputs and outputs
– [5%] user documentation
– where is the source
– how to run the program
– describe parameters (if any)
Source Code
[60%] correctness
[5%] programming style
– layering
– modularity
– readability
– comments
– efficiency
How to Submit your Work
Your solutions must be submitted through blackboard.
Your files for Programming Assignment 2 must include the source code for all modules used for the exercise as well as an executable file to allow your solution to be tested. You must include all your source files, your USES graph, and all your TDNs in a Compressed (zipped) folder (.zip). Your (.zip) folder as well as the subject of your message must follow the format:
402 Programming Assignment 2-Your Name
Marks will be deducted if you do not follow this requirement.