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:

  1. 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.

  2. 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.