Develop a stimulator for a stack based microprocessor

Job ID: 35014357

Budget: $30 – $250 USD

The goal of this exercise is to develop a simulator for a stack-based microprocessor.
The Details
You are to develop a simulator for the abm abstract machine. Your simulator must support all instructions included in the abm-instruction-set.doc document. You may refer to the abm program files demo.abm, factProc.abm, foo.abm, operatorsTest.abm, and recursiveFactorial.abm to help you to understand both the syntax and the semantics of the abm machine. You are to use the Linux operating system. You may choose the programming language for coding your solution. Your simulator must be able to execute any possible program written in the abm machine language.

What to report
The report must contain the following sections and sub-sections. Each section/subsection should be clearly delineated with a proper heading.
1. External Documentation including [5-10 pages]:
a. Title page.
b. A table of contents.
c. [30%] System documentation.
i. A high-level data flow diagram for the complete system.
ii. A list of routines and their brief descriptions.
iii. Implementation details.
d. [15%] Test documentation.
i. How you tested your program.
- Data used for all tests done.
- Testing outputs produced and input files used.
ii. List of program bugs and your plans to address them.
iii. Executable version of your solution.
iv. Difficulties and solutions involved in creating the program.
e. [5%] Algorithms and data structures.
i. Algorithms. Does your system use any complex algorithm?
If NO, skip to the next item,
If YES, describe your algorithm(s).
ii. Data structures. Does your system use any complex data structures such as arrays, linked lists, stacks, queues, graphs, hash tables, or trees?
If NO, skip to the next item,
If YES, what criteria you used in deciding each data structure used, e.g., performance vs. flexibility?

f. [5%] User documentation.
i. What operating system was used.
ii. How to compile your program.
iii. What other applications (tools) does your system require.
iv. How to run your program.
v. Describe parameters (if any).
vi. Other requirements needed to run your executable.

2. Source Code
a. [40%] Correctness.
b. [5%] Programming style.
i. Layering.
ii. Readability.
iii. Comments.
iv. Efficiency.