2.25.31,32,33
1) (8 pts) Translate function f into MIPS assembly language. If you need to use registers $t0 through $t7, use the lower-numbered registers first. Assume the function declaration for func is "int func(int a, int b);". The code for function f is as follows:
int f(int a, int b, int c, int d){
return func(func(a, b), c + d);
}
2) (2 pts) Can we use the tail-call optimization in this function? If no, explain why not. If yes, what is the difference in the number of executed instructions in f with and without the optimization?
3) (2 pts) Right before your function f from Exercise 2.31 returns, what do we know about contents of registers $t5, $s3, $ra, and $sp? Keep in mind that we know what the entire function f looks like, but for function func we only know its declaration.