# # MIPS sample solution. # # Equivalent C code: # # int dotprod(int dim, # int *xvec, # int *yvec) # { # int dp = 0; # # while (dim > 0) { # dp = dp + *xvec++ * *yvec++; # --dim; # } # return dp; # } # .text .globl dotprod dotprod: li $v0, 0 j dtest dloop: lw $t0,0($a1) # $t0 <- *xvec lw $t1,0($a2) # $t1 <- *yvec addu $a1,$a1,4 # xvec++ addu $a2,$a2,4 # yvec++ mul $v1,$t0,$t1 subu $a0,$a0,1 # --dim addu $v0,$v0,$v1 dtest: bgtz $a0,dloop jr $ra