38.0k views
3 votes
Consider the following C code fragment that is executed on the 5 stage Pipelined MIPS architecture

for (i=1; i<=1000; i++)
x[i] = x[i] + y[i];
Provide an equivalent MIPS assembly code fragment. Assume
a. $s0 and $s1 hold the pointers to the start of the x and y arrays, respectively, and
b. the index i is kept in $t0.

1 Answer

0 votes

Final answer:

The MIPS assembly code provided is the equivalent of the C code fragment for adding corresponding elements of two arrays. It loops from 1 to 1000, performing the addition for each element, and uses register operations to manipulate array indices and values.

Step-by-step explanation:

The MIPS assembly code fragment equivalent to the provided C code is as follows:

addi $t0, $zero, 1 # Initialize i to 1
loop: slti $t1, $t0, 1001 # Check if i <= 1000
beq $t1, $zero, endloop # If i > 1000, exit loop
sll $t2, $t0, 2 # Multiply i by 4 to get the correct byte offset
add $t3, $s0, $t2 # Address of x[i]
add $t4, $s1, $t2 # Address of y[i]
lw $t5, 0($t3) # Load x[i]
lw $t6, 0($t4) # Load y[i]
add $t5, $t5, $t6 # Compute x[i] + y[i]
sw $t5, 0($t3) # Store the result back to x[i]
addi $t0, $t0, 1 # Increment i
j loop # Jump back to the start of the loop
endloop:

This code loops through each element of the arrays x and y, adds the corresponding elements together and stores the result back in the array x.

User Vavasthi
by
8.7k points