The following code fragment processes two arrays and produce

The following code fragment processes two arrays and produces an important value in register $v0. Assume that each array consists of 2500 words indexed 0 through 2499, that the base addresses of the arrays are stored in $a0 and $a1 respectively, and their sizes (2500) are stored in $a2 and $a3, respectively. Add comments to the code and describe in one sentence what this code does. Specifically, what will be returned in $v0?


sll $a2, $a2, 2
sll $a3, $a3, 2
add $v0, $zero, $zero
add $t0, $zero, $zero
outer: add $t4, $a0, $t0
lw $t4, 0($t4)
add $t1, $zero, $zero
inner: add $t3, $a1, $t1
lw $t3, 0($t3)
bne $t3, $t4, skip
addi $v0, $v0, 1
skip: addi$ t1, $t1, 4
bne $t1, $a3, inner
addi $t0, $t0, 4
bne $t0, $a2, outer

Solution

sll $a2, $a2, 2
sll $a3, $a3, 2
add $v0, $zero, $zero
add $t0, $zero, $zero
outer: add $t4, $a0, $t0    // address of first array[a]
lw $t4, 0($t4)
add $t1, $zero, $zero
inner: add $t3, $a1, $t1 //address of second array[b]
lw $t3, 0($t3)
bne $t3, $t4, skip   //compare array a and array b
addi $v0, $v0, 1
skip: addi$ t1, $t1, 4
bne $t1, $a3, inner
addi $t0, $t0, 4
bne $t0, $a2, outer

the code is similar to string compare and finds the number of matching elements between array a and array b and returns this number

The following code fragment processes two arrays and produces an important value in register $v0. Assume that each array consists of 2500 words indexed 0 throug

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site