Name: Date:

HW2

  1. (20 points) Convert the following C code to RISC-V assembly instructions. Use the minimum number of instructions necessary. Assume that variables f, g and h are 32- bit integers stored in registers x5, x6 and x7 respectively.

    Be careful not to modify the variables unintentionally. If you need to store temporary values, use one of the other registers.

    a. f = g + h;

    b. f = g - (h - 5);

    c. f = 0x12345000

    d. g = 0x11111111

    e. h = 0x00000FFF

(Continues on next page)
  1. (5 points) Consider changing the RISC-V instruction set to support 64 registers instead of 32. Assuming changes are made only to the register fields, draw the new R-type instruction format. Be sure to label each field and include its size.

  2. (5 points) How many possible R-type instructions does RISC-V support if every possible combination of opcode, funct7, and funct3 are valid instructions? (You can ignore other instruction types for this question.)