For the following C statement, what is the correspondingMIPS assembly code? Assume that the variables f, g, h, i, and j are assigned toregisters $s0, $s1, $s2, $s3, and $s4, respectively. Assume that the base addressof the arrays A and B are in registers $s6 and $s7, respectively.B[8] = A[i−j];2.4 [5] <§§2.2, 2.3> For the MIPS assembly instructions below, what is thecorresponding C statement? Assume that the variables f, g, h, i, and j are assignedto registers $s0, $s1, $s2, $s3, and $s4, respectively. Assume that the base addressof the arrays A and B are in registers $s6 and $s7, respectively.sll $t0, $s0, 2 # $t0 = f * 4add $t0, $s6, $t0 # $t0 = &A[f]sll $t1, $s1, 2 # $t1 = g * 4add $t1, $s7, $t1 # $t1 = &B[g]lw $s0, 0($t0) # f = A[f]addi $t2, $t0, 4lw $t0, 0($t2)add $t0, $t0, $s0sw $t0, 0($t1)2.5 [5] <§§2.2, 2.3> For the MIPS assembly instructions in Exercise 2.4, rewritethe assembly code to minimize the number if MIPS instructions (if possible)needed to carry out the same function.2.6 The table below shows 32-bit values of an array stored in memory.Address Data24 238 432 336 640 1
Question
For the following C statement, what is the correspondingMIPS assembly code? Assume that the variables f, g, h, i, and j are assigned toregisters s1, s3, and s6 and s0, s2, s4, respectively. Assume that the base addressof the arrays A and B are in registers s7, respectively.sll s0, 2 # t0, t0 # t0 = &A[f]sll t1, s1, 2 # t1 = g * 4add s7, t1 # t1 = &B[g]lw t0) # f = A[f]addi t0, 4lw t2)add t0, t0, 0($t1)2.5 [5] <§§2.2, 2.3> For the MIPS assembly instructions in Exercise 2.4, rewritethe assembly code to minimize the number if MIPS instructions (if possible)needed to carry out the same function.2.6 The table below shows 32-bit values of an array stored in memory.Address Data24 238 432 336 640 1
Solution
- For the C statement
B[8] = A[i-j];, the corresponding MIPS assembly code would be:
sub $t0, $s3, $s4 # $t0 = i - j
sll $t0, $t0, 2 # $t0 = (i - j) * 4, assuming 4 bytes per array element
add $t0, $s6, $t0 # $t0 = &A[i - j]
lw $t1, 0($t0) # $t1 = A[i - j]
li $t0, 32 # $t0 = 8 * 4, assuming 4 bytes per array element
add $t0, $s7, $t0 # $t0 = &B[8]
sw $t1, 0($t0) # B[8] = A[i - j]
- For the MIPS assembly instructions given, the corresponding C statement would be:
f = A[f];
B[g] = f + A[f+1];
- To minimize the number of MIPS instructions for the given assembly code, we can eliminate the redundant loading of
ffromA[f]:
sll $t0, $s0, 2 # $t0 = f * 4
add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1 = g * 4
add $t1, $s7, $t1 # $t1 = &B[g]
addi $t2, $t0, 4 # $t2 = &A[f+1]
lw $t0, 0($t2) # $t0 = A[f+1]
add $t0, $t0, $s0 # $t0 = f + A[f+1]
sw $t0, 0($t1) # B[g] = f + A[f+1]
- The table shows 32-bit values of an array stored in memory. Without further context or a specific question, it's unclear what you're asking for regarding this table.
Similar Questions
Translate the following C code to MIPS assembly code. 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 and its value is 0x10 (1016). Thus, D[j] contains the value at address 0x10 + 4 * j.for(i=0; i<a; i++)for(j=0; j<b; j++)D[j] = i + j;
The variables f and g are assigned to the registers X3 and X4, respectively in these ARM instructions. Loop: SUBS XZR, X3, X4 B.GE Exit LSL X3, X3, 1 B LoopExit: What are the corresponding statements in the C language?
In the MIPS assembly language, which of the following is a valid register name?$t0$s1$a2$x4$v0Group of answer choicesII, III, IVIV, VI, II and IIII, IV, V
In MIPS assembly language, which of the following instructions is used for loading a word from memory into a register?Group of answer choiceslalilwsw
Registers X1, X2, X3 have corresponding data stored in each location: X1: AX2: BX3: C Which set of ARM instructions will accomplish A=B+C?
Upgrade your grade with Knowee
Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.