Computer Architecture and Organization

Save Time On Research and Writing
Hire a Pro to Write You a 100% Plagiarism-Free Paper.
Get My Paper

The University of Toledo
Electrical Engineering and Computer Science

EECS 2110 – Computer Architecture and Organization

Homework Assignment 3

Instructions

Save Time On Research and Writing
Hire a Pro to Write You a 100% Plagiarism-Free Paper.
Get My Paper

 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?

add $s0, $s1, $s2

sub $s0, $s3, $s0

addi $s0, $s0, 4

addi $s4, $s2, -1

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

add $t0, $s6, $t0

sll $t1, $s1, 2

add $t1, $s7, $t1

lw $s0, $0($t0)

addi $t2, $t0, 4

lw $t0, 0($t2)

add $t0, $t0, $s0

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:

addi $t0, $s6, 4

add $t1, $s6, $0

sw $t1, 0($t0)

lw $t0, 0($t0)

add $s0, $t1, $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:

Memory Address Value Stored

0x00000100 0x00000064

0x00000104 0x000000C8

0x00000108 0x0000012C

Determine the value of $s0 upon executing the given assembly code. You must explain every
computation state to reach your final value for the contents of $s0 register to receive credit.

Still stressed with your coursework?
Get quality coursework help from an expert!