MIPS example for review session for CS152 SP04 Prereq. quiz By John Gibson vector Junk: ------------ Arugments: 1: Source address 1 2: Source address 2 3: Destination address of summed cosine 4: Destination address of summed sine 5: Destination address of summed tangent 6: Length of vector remaining Return Values: 1: The sum of all the numbers in both source vectors Library functions: ------------------ sine Arguments: 1: Number to be sined Return Values: 1: The sine of the number cosine Arguments: 1: Number to be cosined Return Values: 1: The cosine of the number tan Arguments: 1: Number to be tangented Return Values: 1: The tangented of the number Questions: ---------- Why would a frame pointer be useful? ------ vector_junk: addiu $sp, $sp, -32 # save registers sw $ra, 0($sp) sw $a0, 4($sp) sw $a1, 8($sp) sw $a2, 12($sp) sw $a3, 16($sp) sw $s0, 20($sp) # sum of pair of elts. in source vectors sw $s1, 24($sp) sw $s2, 28($sp) lw $s1, 32($sp) # addr 5 tan lw $s2, 36($sp) # length lw $t0, 0($a0) lw $t1, 0($a1) addu $s0, $t0, $t1 addu $a0, $s0, $zero jal cosine # call to calculate cosine srl $0, $0, 0 lw $a2, 12($sp) sw $v0, 0($a2) addu $a0, $s0, $zero jal sine srl $0, $0, 0 lw $a3, 16($sp) sw $v0, 0($a3) addu $a0, $s0, $zero jal tan srl $0, $0, 0 sw $v0, 0($s1) addiu $s2, $s2, -1 beq $s2, $0, done # check to see if we're done srl $0, $0, 0 lw $a0, 0($sp) lw $a1, 4($sp) lw $a2, 8($sp) lw $a3, 12($sp) addiu $a0, $a0, 4 addiu $a1, $a1, 4 addiu $a2, $a2, 4 addiu $a3, $a3, 4 addiu $s1, $s1, 4 addiu $sp, $sp, -8 sw $s1, 0($sp) # Store args 5 and 6 for the next call sw $s2, 4($sp) jal vector_junk srl $0, $0, 0 addu $v0, $v0, $s0 lw $ra, 8($sp) lw $s0, 28($sp) lw $s1, 32($sp) lw $s2, 36($sp) addiu $sp, $sp, 40 jr $ra srl $0, $0, 0 done: addu $v0, $zero, $s0 lw $ra, 0($sp) lw $s0, 20($sp) lw $s1, 24($sp) lw $s2, 28($sp) addiu $sp, $sp, 32 jr $ra srl $0, $0, 0