Question: * * * PLEASE MAKE SURE YOU DO NOT USE OP CODES: la , li , syscall, bgtz , blez, beqz, bgez, sltz . *

***PLEASE MAKE SURE YOU DO NOT USE OP CODES: la, li, syscall, bgtz, blez, beqz, bgez, sltz.*** AND DO NOT MANUALLY INITIALIZE THE REGISTERS $s0 and $s1 in the code. It should be initialized in the registers.Write a MIPS program using *Recursive Procedure Execution to perform the following tasks: *Note:* If your code runs perfectly, but you didn't use Procedure Execution correctly, you will be given zero points.
Write the following functions in MIPS.
main
inputs: integers a, b
task: Compute the integer: a * F(|a+b|,|a-b|)- b * F(|b-a|,|b+a|).
recursion F(x, y)
inputs: integers x, y.
task:
F(x, y)= F(x-1, y)+ F(x, y-1), if x, y >0
F(x, y)= y if x =0, y >0
F(x, y)= x if y =0, x >0
F(x, y)=0 if x, y =0
Following is a sample C code segment. You may modify the code for the functions, but the task performed should not be changed, i.e., you should use recursive procedure calls.
int main(int a, int b){
int result = a * recursion(abs(a+b), abs(a-b))- b * recursion(abs(b-a), abs(b+a));
}
int recursion(int x, int y){
if (x =0 && y =0)
return(0);
else if (x >0 && y =0)
return(x);
else if (x =0 && y >0)
return(y);
else
return(recursion(x-1, y)+ recursion(x, y-1));
}
Registers Variables
$s0 a
$s1 b
$s2 result
Example Test: If the values of $s1 and $s2 are initialized in the simulator as:
(Use the '+' button under the Registers display to initialize register values for $s1, $s2.)
Registers Data
$s01
$s12
$s20
The resultant registers are:
Registers Data
$s01
$s12
$s2-7
* * * PLEASE MAKE SURE YOU DO NOT USE OP CODES:

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!