# function smaller receives 2 parameters that are # pointers to integer values. It returns the # value of the smaller parameter. smaller: # prologue: sub $sp, $sp, 20 # allocate AR sw $ra 20($sp) # save return address sw $8, 4($sp) # save $8 sw $9, 8($sp) # save $9 sw $10, 12($sp) # save $10 sw $11, 16($sp) # save $11 lw $8, 24($sp) # first parameter is pointer lw $9, ($8) # get first integer value in $9 lw $10, 28($sp) # second parameter is pointer lw $11, ($10) # get second integer value in $11 ble $9, $11, epilogue move $9, $11 # smaller value goes in $9 epilogue: move $v0, $9 # set return value in $v0 lw $8, 4($sp) # restore $8 lw $9, 8($sp) # restore $9 lw $10, 12($sp) # restore $10 lw $11, 16($sp) # restore $11 lw $ra 20($sp) # restore return address add $sp, $sp, 20 # deallocate AR jr $ra