# CS/EE 3810 Assignment 2 solved

\$35.00

## Description

5/5 - (1 vote)

1. Annotate the following MIPS instructions to indicate source registers and destination
registers. A source register is read during the instruction’s execution, while a
destination register is written during the instruction’s execution. (12 points)
2. lw \$s3, 8(\$gp)
3. sw \$s4, 12(\$s5)
5. bne \$t1, \$t2, else
2. Consider a program that declares global integer variables x, y[10]. These variables are
allocated starting at a base address of decimal 1000. All these variables have been
initialized to zero. The base address 1000 has been placed in \$gp. The program
executes the following assembly instructions:
lw \$s1, 0(\$gp)
sw \$s1, 0(\$gp)
lw \$s2, 12(\$gp)
sw \$s2, 8(\$gp)
sw \$s2, 12(\$gp)
1. What are the memory addresses of variables x, y[0], and y[1]? (15 points)
2. What are the values of variables x, y[0], y[1], and y[2] at the end of the program?
(20 points)
3. Express the following decimal number in binary and hexadecimal forms: 146. (6
points)
4. Express the following binary number in decimal and hexadecimal forms: 1001100. (6
points)
5. Express the following hexadecimal number in decimal and binary forms: 0x6d. (6
points)
6. Write the MIPS assembly code that corresponds to the pseudo code below. Assume
baseaddress+8. Assume that the baseaddress is stored in \$gp. The code initializes i to
0; it then iterates from i=0 to i=9, setting a[i] = 4i in each iteration. To make your
code efficient, i must be loaded into a register at the start, and it must be updated in
memory only after you’ve finished the for loop.
for (i=0; i<10; i++) CS/EE 3810 http://www.cs.utah.edu/~rajeev/cs3810/hw/hw18-2.html 2/2 a[i] = 4*i; (35 points)