Reference no: EM131849210
Assignment: Computer Architecture and Organization
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 $tO, $s0, 2
add $tO, $s6, $t0 sll $t1, $s1, 2
add $t1, $s7, $t1
1w $s0, $0($t0)
addi $t2, $tO, 4
1w $tO, 0($t2)
add $tO, $tO, $s0
sw $tO, 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 $tO, $s6, 4
add $t1, $s6, $0
sw $t1, 0($t0)
1w $tO, 0($t0)
add $s0, $t1, $t0
Assume that the registers $s0, $s1, $s2, and $s3 hold the values Ox0000000A, 0x00000014, 0x0000001 E, and 0x00000028, respectively. Also, assume that register $s6 holds the value Ox00000100, and the memory contents are as shown in the below table:
Memory Address
|
Value Stored
|
0x00000100
|
0x00000064
|
0x00000104
|
Ox00000008
|
0x00000108
|
Ox0000012C
|
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.