# Lab 3 "Solution" (sort of) # This is a fairly inefficient program. I deliberately write it # this way to illustrate the subtleties of the MIPS calling conventions # Gek Siong Low (cs61c-tb), Spring 1999 __start: main: # Variables: a - s0 # b - s1 # size - s2 addi $sp, $sp, -400 # allocate stack for a add $s0, $sp, $zero addi $sp, $sp, -400 # allocate stack for b add $s1, $sp, $zero addi $s2, $zero, 20 # size=0 add $a0, $s0, $zero # initialize(a,size,0) add $a1, $s2, $zero add $a2, $zero, $zero jal initialize add $a0, $s1, $zero # initialize(b,size,20) add $a1, $s2, $zero addi $a2, $zero, 20 jal initialize add $a0, $s0, $zero # sumprod(a,b,size) add $a1, $s1, $zero add $a2, $s2, $zero jal sumprod add $t0, $v0, $zero # cannot use puti $v0 puti $t0 # because puti clobbers $v0 first putc '\n' addi $sp, $sp, 800 # remember to restore stack! done multloop: # this is Kevin/Wayne's multloop # since it works and conforms to conventions # I'll just plug it in here add $t5, $zero, $zero addi $t5, $zero, 255 #t5=255 slt $t0, $t5, $a1 #if t5