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 should definitely consider how your
processor will receive the input number for
relPrime. 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. Think about
what the first programs you would write in any new programing language
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 In M1
Submit the following for this milestone:
- Design document that includes the following information.
- A coverpage including your team name and team member's names.
- A one paragraph description of your design at a high level.
- Description of the registers available to the assembly language programmer and those reserved for any specific purpose.
- 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).
- A symbolic description of the behavior of each instruction (like those on the MIPS Green Sheet).
- 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?).
- An explanation of any procedure call conventions, especially relating to register and stack use (see pages A-22 through A-26 of your book).
- Example assembly language program demonstrating that your instruction set supports a program to find relative primes using the algorithm on the project page.
- Assembly language fragments for common operations. For example, this might be loading an address into a register, iteration, conditional statements, reading data from the input port, reading from and writing to the display register, or writing to the output port.
- Machine language translations of your assembly programs (relprime and your fragments).
- As an example of a professional report on a processor you can reference the data sheet for the MIPS R4300i processor. This has much more information than you will have ready during this milestone, but you should reference it early and often.
- An individual design journal for each member. This must:
- Include details about what that member worked on for the week (including time taken)
- Include design decisions the team and individual member made during this milestone, including summary of meetings' outcomes, and work that may not be reflected in the design journal.
- Include a list of tasks the member was assigned for the next milestone (planning for the next Milestone), including estimated time required for each task.
- Be commited by the individual author. Each member must commit their own log. Teammates cannot do this for you.
- If you need help writing the journal, try adding one or two sentences for each work session in the form "I did X because of Y". The justification ("Y") is really important to show the depth of your design process.
Example individual journal:
Selana McIntosh, WORK LOG
MILESTONE 1 WORK:
Tuesday, December 3, 2067
Met with team [35 min]
- 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.
Wednesday, December 4, 2067
Design procedure call conventions, we decided to split temporary and saved registers this allows our design to minimize memory accesses across procedure calls. [20 minutes]
Thursday, December 5, 2067
Write up call conventions, we made some changes to decrease the number of saved registers because we want programmers to think carefully about using them. [25 minutes]
Friday, December 6, 2067
Met with team [30 min]
We assigned tasks for milestone 2. My tasks are:
- Draft RTL for addi instruction [est 20 min]
- Review RTL for bne and jal (reviewing Alexa's work). [est 1 hour]
- Brainstorm a list of components we'll need to create. [est 15 min]
Your documents should be placed in the main
design directory of your
team's repository. Your instructor will specifically check for each bulleted item when