Question: Convert the C code to MIPS. recursion 1 . c: #include int recursion ( int m ) { if ( m = = - 1
Convert the C code to MIPS.
recursionc:
#include
int recursionint m
ifm
return ;
else ifm
if m
return ;
else
return ;
else
return recursionm m recursionm ;
int main
int x;
printfPlease enter a number: ;
scanfd &x;
printfd recursionx;
return ;
Attempted MIPS code always returns no matter what input:
data
prompt: asciiz "Please enter a number:
result: asciiz "The result is:
text
main:
li $v # syscall for print string
la $a prompt
syscall
li $v # syscall for read int
syscall
move $a $v # move read integer to $a for recursion
jal recursion # Call recursion with input x
li $v # syscall for print string
la $a result
syscall
move $a $v # Move result to $a for printing
li $v # syscall for print int
syscall
li $v # syscall to exit
syscall
recursion:
addi $sp $sp # stack frame for variables
sw $ra$sp # save return address
sw $a$sp # save original m
# Base cases
li $v # return value for m
beq $a finish
li $v # return value for m
beq $a finish
li $v # return value for m
blt $a finish
# Recursive case for m
addi $a $a
jal recursion
sw $v$sp # Store result of recursionm
lw $a$sp # Restore original m
addi $a $a
jal recursion # Recurse with m
lw $t$sp # Load original m
lw $t$sp # Load result of recursionm
add $v $v $t # Add results of recursionm and recursionm
add $v $v $t # Add m to sum
finish:
lw $ra$sp # Restore return address
addi $sp $sp # Restore stack pointer
jr $ra
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
