# Comment your MIPS code to explain the computation. 2) This problem deals with translating from MIPS to C. Assume that the variables f, g, h, i and j are assigned to registers \$s0, \$s1, \$s2, \$s3 and \$s4, respectively. In other words, the corresponding MIPS registers hold the values for their counterpart variables. What is the corresponding C code for the following MIPS instructions?

The University of Toledo Electrical Engineering and Computer Science

EECS 2110 – Computer Architecture and Organization

Homework Assignment 3

Instructions

 This homework is an individual activity. You may discuss the problem statements with others to understand in clear terms what the problem requires. The solution however must be your own work!

 All problems (questions or exercises) and indicated subparts must be solved for full credit. Problems or their subparts are not necessarily equally weighted.

 Use one side of a letter-size typing paper and staple the submission package on the top left.

 Presentation, organization, neatness and legibility of the submission will be considered for grading. Computer use for solution document preparation is not required. You may write and draw by hand.

 Include the following on the top right of the first page: Your full name, rocket number, course number & name, homework #, and the date of submission. Initialize every other sheet.

 Submit as hardcopy only: electronic submission is not permitted unless preauthorized by the instructor for a valid reason.

 Late submission may not receive credit! Questions 1) This problem deals with translating from C to MIPS assembly. Assume that the variables f, g, h, i and j are assigned to registers \$s0, \$s1, \$s2, \$s3 and \$s4, respectively. In other words, the corresponding MIPS registers hold the values for their counterpart variables. What is the

corresponding MIPS code for C statements f=g+h+i+j+1;, f=g+(h-5); and f=i-f;?

Comment your MIPS code to explain the computation. 2) This problem deals with translating from MIPS to C. Assume that the variables f, g, h, i and j are assigned to registers \$s0, \$s1, \$s2, \$s3 and \$s4, respectively. In other words, the corresponding MIPS registers hold the values for their counterpart variables. What is the corresponding C code for the following MIPS instructions?

sub \$s0, \$s3, \$s0

3) This problem deals with translating from C to MIPS assembly. Assume that the variables f, g, h, i and j are assigned to registers \$s0, \$s1, \$s2, \$s3 and \$s4, respectively. In other words, the corresponding MIPS registers hold the values for their counterpart variables. Assume that the base address of the arrays A and B are in registers \$s6 and \$s7, respectively.

a. For the C statement f=-g-A[4]; what is the corresponding MIPS assembly code? Comment

your assembly code to explain the computation given in the C statement.

b. For the C statement B[8]=A[i-j]; what is the corresponding MIPS assembly code? Comment

your assembly code to explain the computation given in the C statement. 4) This problem deals with translating from MIPS to C. Assume that the variables f, g, h, i and j are assigned to registers \$s0, \$s1, \$s2, \$s3 and \$s4, respectively. Assume that the base address of the arrays A and B are in registers \$s6 and \$s7, respectively. a. For the assembly instructions below, what is the corresponding C statement(s)?

sll \$t0, \$s0, 2

sll \$t1, \$s1, 2

lw \$s0, \$0(\$t0)

lw \$t0, 0(\$t2)

sw \$t0, 0(\$t1)

b. Rewrite the above MIPS assembly code to minimize the number of assembly instructions (to the extent possible) to implement the same function. c. Compare the number of registers being used between the given code and the code which you attempted to minimize for its instruction count. 5) This problem deals with translating from C to MIPS. Assume that the variables f, g, h, i and j are assigned to registers \$s0, \$s1, \$s2, \$s3 and \$s4, respectively. Assume that the base address of the

arrays A and B are in registers \$s6 and \$s7, respectively. For the C statements f=f+A[2]; and

B[8]=A[i]+A[j];, write the corresponding MIPS code while keeping the register count being used

to and instruction count at minimum. 6) This problem deals with analyzing the computation being performed by MIPS assembly code. Consider the MIPS assembly code fragment given below:

sw \$t1, 0(\$t0)

lw \$t0, 0(\$t0)

Assume that the registers \$s0, \$s1, \$s2, and \$s3 hold the values 0x0000000A, 0x00000014, 0x0000001E, and 0x00000028, respectively. Also, assume that register \$s6 holds the value 0x00000100, and the memory contents are as shown in the below table: