CS2601 Assembly Language Programming
Jan-Jun, 2019
Indian Institute of Technology Tirupati, India

Objective:

1) To learn the interaction between programming language and hardware architecture. 2) To design a processor for a given set of instructions

Experiments:

  • x86 and MIPS instruction set:

    1) is to write the assembly program on X86 instruction set
    2) Compile the program with gcc and execute it on the native (the host) machine
    3) To see the internal registers content we will use DDD ( a GUI version of gdb) for debugging the program for each memory location and content of each registers.
    4) To learn the MIPS instruction set we will use QtSPIM (You can get it download from University of Wisconsin QtSPIM page)

  • In this exercise we will explore almost all the instructions from x86 set through a set of programming.

  • ARM 32bit:

    1) We will use the ARM Keil or Eclipse to compile the ARM assembly program for the ARM Cortex.
    2) Connect the Keil or Eclipe with the ARM based FPGA board (We will use Zynq-7000 or Zed board)
    3) Prepare the machine code for the ARM board
    4) Execute the program on ARM board
    5) Debug the board to observe the internal content of each registers and memory location

  • Multi-cycle ARM Processor:

    1) You will be give a selected set of basic instructions + additional specific feature instructions
    2) The goal is to write a VHDL/Verilog code for the instruction set to design a multi-cycle processor.
    3) Write a test bench to simulate each of the instructions on the processor you designed
    4) Write a test bench to simulate an assembly program written using the instructions set and verify the processor.

  • References:

  • Read the data sheet of 8086 and intel X86 instruction. (Detail will be updated!)
  • Computer Organisation and Design: Hardware/Software Interface, John Hennessy and Dave Patterson, Fourth Edition.
  • ARM Instruction set.
  • you have to learn: gnu gcc, gdb/ddd, as, python, c/c++ and shell.