Question 5: Which are callers/callees?
Is main a caller/callee?
main:
addi $t4, $zero, 8 # a = 8
addi $t5, $zero, 4 # b = 4
jal manipulate # $s0 = manipulate(a, b)
beq $t4, $s0, main # loop based on results
j Exit
Is manipulate a caller/callee?
manipulate: # inputs: a and b
add $t2, $t0, $t1 # c = a + b
sub $t3, $t0, $t1 # d = a - b
jal double # $t4, $t5 = double(c, d)
add $t4, $t4, $t2 # e = 2c + c
sub $t5, $t5, $t4 # result = 2d - e
jr $ra
Is double a caller/callee?
double: # inputs: q and r
add $v0, $a0, $a0 # result1 = q + q = 2q
add $v1, $a1, $a1 # result2 = r + r = 2r
jr $ra
Exit: # exit instructions