2.1 [5] <§2.2> For the following C statement, what is the corresponding MIPS assembly code? Assume that the variables f, g, h , and i are given and could be considered 32-bit integers as declared in a C program. Use a minimal number of MIPS assembly instructions. f = g + (h – 5);
2.3 (Hint: Every array element occupies four memory addresses).
2.3 [5] <§§2.2, 2.3> For the following C statement, what is the corresponding MIPS assembly code? 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. B[8] = A[i–j];
sub
2.6.2 (No need to do it with a sorting algorithm, just use lw and sw).
The table below shows 32-bit values of an array stored in memory.
For the memory locations in the table above, write MIPS code to sort the data from lowest to highest, placing the lowest value in the smallest memory location. Use a minimum number of MIPS instructions. Assume the base address of Array is stored in register $s6 .
2.27 (Hint: Use slt, beq and j to make loops happen).
2.27 [5] <§2.7> Translate the following C code to MIPS assembly code. Use a minimum number of instructions. Assume that the values of a , b , i , and j are in registers $s0 , $s1 , $t0 , and $t1 , respectively. Also, assume that register $s2 holds the base address of the array D. for(i=0; i<a; i++)
for(j=0; j<b; j++)
D[4*j] = i + j;