Milestone 1
1 Assembly Language Specifications
Your first step is to describe everything that a user needs to know in order to write an assembly language program for your processor. You should then use your assembly language to write relPrime and Euclid's algorithm. Make sure that you satisfy the requirements listed in the project overview. In particular, you should provide support for general computations and procedures. You must also write several small programs to demonstrate common operations (loops, loads, procedures, etc.). These programs will serve as a test to help determine if your instruction set is implemented correctly.
2 Machine Language Specifications
Your next step should be to describe everything that a user needs to know to write an assembler for your processor (i.e. to translate statements from your assembly language to your machine language). Along with this, you should translate your assembly language programs into machine language.
You may have to modify your assembly language specifications while working on the machine language specifications.
3 Turning It In
Submit the following for this milestone:
- Design document that includes the following information.
- Description of the registers available to the assembly
language programmer and those reserved for any specific purpose.
- An explanation of any procedure call conventions, especially
relating to register and stack use (see pages A-22 through A-26 of
your book).
- An unambiguous English description of each machine language
instruction format type and its semantics (see Section 2.5, pages 80
through 87 of your book).
- An unambiguous English description of the syntax and
semantics of each instruction (see pages A-51 through A-80 of
your book).
- The rule for translating each assembly language instruction
into machine language.
This probably requires the addressing modes to be defined (i.e. is branch PC relative?).
- Example assembly language program demonstrating that your
instruction set supports a program to determine the
gcd using Euclid’s algorithm.
- Assembly language fragments for common operations such as
loading an address into a register, iteration, conditional
statements, reading data from the input port, reading from and
writing to the display register, and writing to the output port.
- Machine language translations of the programs written for testing.
- Description of the registers available to the assembly
language programmer and those reserved for any specific purpose.
- Design process journal which describes your thought processes
and rationale behind your major choices and decisions.
You must also include each member's work for the week.
Example:
Milestone 1
Meeting Tuesday, December 3, 2067
We decided to build a accumulator based processor. An accumulator design will fit well with the 16-bit requirements. We then decided to include 4 special registers for tracking old accumulator values. These registers can be accessed with a 'move' instruction allowing the benefits similar to stack-based designs. Work for the week:
Selena: Define call convention [DONE]
Leeroy+Hanson: write descriptions for instructions
Thelma: Write Euclid's algo in our language
Your documents should be placed in the main Design directory of your team's repository. I will refer to this rubric when grading.