Translate C code into MIPS. Do not include an exit syscall
int proc1( int a, int b ) {
if ( proc2( a, b ) >= 0 )
return 1;
else
return -1;
}
int proc2( int a, int b ) {
return (a*10) & (b*10);
}
int main() {
int a = 9;
int b = -10;
int c = a + b + proc1( a, b );
printf("%d\n", c );
return 0;
}
Please find the answer below.
Please do comments in case of any issue. Also, don't forget to rate
the question. Thank You So Much.
.text
.globl main
main:
li $a0,9 #a=9
li $a1,-10 #b=-10
add $s1,$a0,$a1 #get a+b
jal proc1
add $s1,$s1,$v0 #get a+b+proce1(a,b)
move $a0,$s1
li $v0,1
syscall
li $v0,10
syscall
proc2: # a will be in a0,b will be in a1
mul $a0,$a0,10 #get a*10
mul $a1,$a1,10 #get b*10
and $v0,$a0,$a1 # get (a*10) & (b*10);
jr $ra
proc1:# a will be in a0,b will be in a1
move $s0,$ra #store ra
jal proc2 #call proc2
bgt $v0,0,if
else:
li $v0,-1
jr $s0 #return 01
if:
li $v0,1
jr $s0 #return 01
Get Answers For Free
Most questions answered within 1 hours.