Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hello , I have to finish a MIPS project, but I don\'t know how to do it , some o

ID: 3700543 • Letter: H

Question

Hello , I have to finish a MIPS project, but I don't know how to do it , some one who can help me transfer from the C language to MIPS. Thank you so much

#include<stdio.h>

char op[5]={'#', '+', '-', '*', '/',};

float cal(float x, float y, int op)

{

switch(op)

{

case 1: return x+y;

case 2: return x-y;

case 3: return x*y;

case 4: return x/y;

default: return 0.0;

}

}

float calculate_model1(float i, float j, float k, float t, int op1, int op2, int op3)

{

float r1, r2, r3;

r1 = cal(i, j, op1);

r2 = cal(r1, k, op2);

r3 = cal(r2, t, op3);

return r3;

}

float calculate_model2(float i, float j, float k, float t, int op1, int op2, int op3)

{

float r1, r2, r3;

r1 = cal(j, k, op2);

r2 = cal(i, r1, op1);

r3 = cal(r2, t, op3);

return r3;

}

float calculate_model3(float i, float j, float k, float t, int op1, int op2, int op3)

{

float r1, r2, r3 ;

r1 = cal(k, t, op3);

r2 = cal(j, r1, op2);

r3 = cal(i, r2, op1);

return r3;

}

float calculate_model4(float i, float j, float k, float t, int op1, int op2, int op3)

{

float r1, r2, r3;

r1 = cal(j, k, op2);

r2 = cal(r1, t, op3);

r3 = cal(i, r2, op1);

return r3;

}

float calculate_model5(float i,float j,float k,float t,int op1,int op2,int op3)

{

float r1, r2, r3 ;

r1 = cal(i, j, op1);

r2 = cal(k, t, op3);

r3 = cal(r1, r2, op2);

return r3;

}

int get24(int i, int j, int k, int t)

{

int op1, op2, op3;

int flag=0;

for(op1=1; op1<=4; op1++)

for(op2=1; op2<=4; op2++)

for(op3=1; op3<=4; op3++)

{

if(calculate_model1(i, j, k, t, op1, op2, op3)==24)

{

printf("((%d%c%d)%c%d)%c%d=24 ", i, op[op1], j, op[op2], k, op[op3], t);

flag = 1;

}

if(calculate_model2(i, j, k, t, op1, op2, op3)==24)

{

printf("(%d%c(%d%c%d))%c%d=24 ", i, op[op1], j, op[op2], k, op[op3], t);

flag = 1;

}

if(calculate_model3(i, j, k, t, op1, op2, op3)==24)

{

printf("%d%c(%d%c(%d%c%d))=24 ", i, op[op1], j, op[op2], k, op[op3], t);

flag = 1;

}

if(calculate_model4(i, j, k, t, op1, op2, op3)==24)

{

printf("%d%c((%d%c%d)%c%d)=24 ", i, op[op1], j, op[op2], k, op[op3], t);

flag = 1;

}

if(calculate_model5(i, j, k, t, op1, op2, op3)==24)

{

printf("(%d%c%d)%c(%d%c%d)=24 ", i, op[op1], j, op[op2], k, op[op3], t);

flag = 1;

}

}

return flag;

}

int main()

{

int i, j, k, t;

printf("Please input four integer (1~10) ");

loop: scanf("%d %d %d %d", &i, &j, &k, &t);

if(i<1||i>10 || j<1||j>10 || k<1||k>10 || t<1||t>10)

{

printf("Input illege, Please input again ");

goto loop;

}

if( get24(i, j, k, t) );

else

printf("Sorry, the four integer cannot be calculated to get 24 ");

return 0;

}

Explanation / Answer

ANSWER :

op:

.byte 35

.byte 43

.byte 45

.byte 42

.byte 47

cal(float, float, int):

addiu $sp,$sp,-8

sw $fp,4($sp)

move $fp,$sp

swc1 $f12,8($fp)

swc1 $f14,12($fp)

sw $6,16($fp)

lw $2,16($fp)

li $3,2 # 0x2

beq $2,$3,$L3

nop

slt $3,$2,3

beq $3,$0,$L4

nop

li $3,1 # 0x1

beq $2,$3,$L5

nop

b $L2

nop

$L4:

li $3,3 # 0x3

beq $2,$3,$L6

nop

li $3,4 # 0x4

beq $2,$3,$L7

nop

b $L2

nop

$L5:

lwc1 $f2,8($fp)

lwc1 $f0,12($fp)

nop

add.s $f0,$f2,$f0

b $L8

nop

$L3:

lwc1 $f2,8($fp)

lwc1 $f0,12($fp)

nop

sub.s $f0,$f2,$f0

b $L8

nop

$L6:

lwc1 $f2,8($fp)

lwc1 $f0,12($fp)

nop

mul.s $f0,$f2,$f0

b $L8

nop

$L7:

lwc1 $f2,8($fp)

lwc1 $f0,12($fp)

nop

div.s $f0,$f2,$f0

b $L8

nop

$L2:

mtc1 $0,$f0

$L8:

move $sp,$fp

lw $fp,4($sp)

addiu $sp,$sp,8

j $31

nop

calculate_model1(float, float, float, float, int, int, int):

addiu $sp,$sp,-48

sw $31,44($sp)

sw $fp,40($sp)

move $fp,$sp

swc1 $f12,48($fp)

swc1 $f14,52($fp)

sw $6,56($fp)

sw $7,60($fp)

lw $6,64($fp)

lwc1 $f14,52($fp)

lwc1 $f12,48($fp)

jal cal(float, float, int)

nop

swc1 $f0,24($fp)

lw $6,68($fp)

lwc1 $f14,56($fp)

lwc1 $f12,24($fp)

jal cal(float, float, int)

nop

swc1 $f0,28($fp)

lw $6,72($fp)

lwc1 $f14,60($fp)

lwc1 $f12,28($fp)

jal cal(float, float, int)

nop

swc1 $f0,32($fp)

lwc1 $f0,32($fp)

move $sp,$fp

lw $31,44($sp)

lw $fp,40($sp)

addiu $sp,$sp,48

j $31

nop

calculate_model2(float, float, float, float, int, int, int):

addiu $sp,$sp,-48

sw $31,44($sp)

sw $fp,40($sp)

move $fp,$sp

swc1 $f12,48($fp)

swc1 $f14,52($fp)

sw $6,56($fp)

sw $7,60($fp)

lw $6,68($fp)

lwc1 $f14,56($fp)

lwc1 $f12,52($fp)

jal cal(float, float, int)

nop

swc1 $f0,24($fp)

lw $6,64($fp)

lwc1 $f14,24($fp)

lwc1 $f12,48($fp)

jal cal(float, float, int)

nop

swc1 $f0,28($fp)

lw $6,72($fp)

lwc1 $f14,60($fp)

lwc1 $f12,28($fp)

jal cal(float, float, int)

nop

swc1 $f0,32($fp)

lwc1 $f0,32($fp)

move $sp,$fp

lw $31,44($sp)

lw $fp,40($sp)

addiu $sp,$sp,48

j $31

nop

calculate_model3(float, float, float, float, int, int, int):

addiu $sp,$sp,-48

sw $31,44($sp)

sw $fp,40($sp)

move $fp,$sp

swc1 $f12,48($fp)

swc1 $f14,52($fp)

sw $6,56($fp)

sw $7,60($fp)

lw $6,72($fp)

lwc1 $f14,60($fp)

lwc1 $f12,56($fp)

jal cal(float, float, int)

nop

swc1 $f0,24($fp)

lw $6,68($fp)

lwc1 $f14,24($fp)

lwc1 $f12,52($fp)

jal cal(float, float, int)

nop

swc1 $f0,28($fp)

lw $6,64($fp)

lwc1 $f14,28($fp)

lwc1 $f12,48($fp)

jal cal(float, float, int)

nop

swc1 $f0,32($fp)

lwc1 $f0,32($fp)

move $sp,$fp

lw $31,44($sp)

lw $fp,40($sp)

addiu $sp,$sp,48

j $31

nop

calculate_model4(float, float, float, float, int, int, int):

addiu $sp,$sp,-48

sw $31,44($sp)

sw $fp,40($sp)

move $fp,$sp

swc1 $f12,48($fp)

swc1 $f14,52($fp)

sw $6,56($fp)

sw $7,60($fp)

lw $6,68($fp)

lwc1 $f14,56($fp)

lwc1 $f12,52($fp)

jal cal(float, float, int)

nop

swc1 $f0,24($fp)

lw $6,72($fp)

lwc1 $f14,60($fp)

lwc1 $f12,24($fp)

jal cal(float, float, int)

nop

swc1 $f0,28($fp)

lw $6,64($fp)

lwc1 $f14,28($fp)

lwc1 $f12,48($fp)

jal cal(float, float, int)

nop

swc1 $f0,32($fp)

lwc1 $f0,32($fp)

move $sp,$fp

lw $31,44($sp)

lw $fp,40($sp)

addiu $sp,$sp,48

j $31

nop

calculate_model5(float, float, float, float, int, int, int):

addiu $sp,$sp,-48

sw $31,44($sp)

sw $fp,40($sp)

move $fp,$sp

swc1 $f12,48($fp)

swc1 $f14,52($fp)

sw $6,56($fp)

sw $7,60($fp)

lw $6,64($fp)

lwc1 $f14,52($fp)

lwc1 $f12,48($fp)

jal cal(float, float, int)

nop

swc1 $f0,24($fp)

lw $6,72($fp)

lwc1 $f14,60($fp)

lwc1 $f12,56($fp)

jal cal(float, float, int)

nop

swc1 $f0,28($fp)

lw $6,68($fp)

lwc1 $f14,28($fp)

lwc1 $f12,24($fp)

jal cal(float, float, int)

nop

swc1 $f0,32($fp)

lwc1 $f0,32($fp)

move $sp,$fp

lw $31,44($sp)

lw $fp,40($sp)

addiu $sp,$sp,48

j $31

nop

$LC1:

.ascii "((%d%c%d)%c%d)%c%d=24 "

$LC2:

.ascii "(%d%c(%d%c%d))%c%d=24 "

$LC3:

.ascii "%d%c(%d%c(%d%c%d))=24 "

$LC4:

.ascii "%d%c((%d%c%d)%c%d)=24 "

$LC5:

.ascii "(%d%c%d)%c(%d%c%d)=24 "

get24(int, int, int, int):

addiu $sp,$sp,-64

sw $31,60($sp)

sw $fp,56($sp)

move $fp,$sp

sw $4,64($fp)

sw $5,68($fp)

sw $6,72($fp)

sw $7,76($fp)

sw $0,52($fp)

li $2,1 # 0x1

sw $2,40($fp)

$L35:

lw $2,40($fp)

nop

slt $2,$2,5

beq $2,$0,$L20

nop

li $2,1 # 0x1

sw $2,44($fp)

$L34:

lw $2,44($fp)

nop

slt $2,$2,5

beq $2,$0,$L21

nop

li $2,1 # 0x1

sw $2,48($fp)

$L33:

lw $2,48($fp)

nop

slt $2,$2,5

beq $2,$0,$L22

nop

lw $2,64($fp)

nop

mtc1 $2,$f0

nop

cvt.s.w $f0,$f0

lw $2,68($fp)

nop

mtc1 $2,$f2

nop

cvt.s.w $f2,$f2

lw $2,72($fp)

nop

mtc1 $2,$f4

nop

cvt.s.w $f4,$f4

lw $2,76($fp)

nop

mtc1 $2,$f6

nop

cvt.s.w $f6,$f6

lw $2,48($fp)

nop

sw $2,24($sp)

lw $2,44($fp)

nop

sw $2,20($sp)

lw $2,40($fp)

nop

sw $2,16($sp)

mfc1 $7,$f6

mfc1 $6,$f4

mov.s $f14,$f2

mov.s $f12,$f0

jal calculate_model1(float, float, float, float, int, int, int)

nop

mov.s $f2,$f0

li $3,1 # 0x1

lui $2,%hi($LC0)

lwc1 $f0,%lo($LC0)($2)

nop

c.eq.s $f2,$f0

nop

bc1t $L23

nop

move $3,$0

$L23:

andi $2,$3,0x00ff

beq $2,$0,$L24

nop

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,40($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $5,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,44($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $4,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,48($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $3,$2

lw $2,76($fp)

nop

sw $2,28($sp)

sw $3,24($sp)

lw $2,72($fp)

nop

sw $2,20($sp)

sw $4,16($sp)

lw $7,68($fp)

move $6,$5

lw $5,64($fp)

lui $2,%hi($LC1)

addiu $4,$2,%lo($LC1)

jal printf

nop

li $2,1 # 0x1

sw $2,52($fp)

$L24:

lw $2,64($fp)

nop

mtc1 $2,$f0

nop

cvt.s.w $f0,$f0

lw $2,68($fp)

nop

mtc1 $2,$f2

nop

cvt.s.w $f2,$f2

lw $2,72($fp)

nop

mtc1 $2,$f4

nop

cvt.s.w $f4,$f4

lw $2,76($fp)

nop

mtc1 $2,$f6

nop

cvt.s.w $f6,$f6

lw $2,48($fp)

nop

sw $2,24($sp)

lw $2,44($fp)

nop

sw $2,20($sp)

lw $2,40($fp)

nop

sw $2,16($sp)

mfc1 $7,$f6

mfc1 $6,$f4

mov.s $f14,$f2

mov.s $f12,$f0

jal calculate_model2(float, float, float, float, int, int, int)

nop

mov.s $f2,$f0

li $3,1 # 0x1

lui $2,%hi($LC0)

lwc1 $f0,%lo($LC0)($2)

nop

c.eq.s $f2,$f0

nop

bc1t $L25

nop

move $3,$0

$L25:

andi $2,$3,0x00ff

beq $2,$0,$L26

nop

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,40($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $5,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,44($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $4,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,48($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $3,$2

lw $2,76($fp)

nop

sw $2,28($sp)

sw $3,24($sp)

lw $2,72($fp)

nop

sw $2,20($sp)

sw $4,16($sp)

lw $7,68($fp)

move $6,$5

lw $5,64($fp)

lui $2,%hi($LC2)

addiu $4,$2,%lo($LC2)

jal printf

nop

li $2,1 # 0x1

sw $2,52($fp)

$L26:

lw $2,64($fp)

nop

mtc1 $2,$f0

nop

cvt.s.w $f0,$f0

lw $2,68($fp)

nop

mtc1 $2,$f2

nop

cvt.s.w $f2,$f2

lw $2,72($fp)

nop

mtc1 $2,$f4

nop

cvt.s.w $f4,$f4

lw $2,76($fp)

nop

mtc1 $2,$f6

nop

cvt.s.w $f6,$f6

lw $2,48($fp)

nop

sw $2,24($sp)

lw $2,44($fp)

nop

sw $2,20($sp)

lw $2,40($fp)

nop

sw $2,16($sp)

mfc1 $7,$f6

mfc1 $6,$f4

mov.s $f14,$f2

mov.s $f12,$f0

jal calculate_model3(float, float, float, float, int, int, int)

nop

mov.s $f2,$f0

li $3,1 # 0x1

lui $2,%hi($LC0)

lwc1 $f0,%lo($LC0)($2)

nop

c.eq.s $f2,$f0

nop

bc1t $L27

nop

move $3,$0

$L27:

andi $2,$3,0x00ff

beq $2,$0,$L28

nop

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,40($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $5,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,44($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $4,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,48($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $3,$2

lw $2,76($fp)

nop

sw $2,28($sp)

sw $3,24($sp)

lw $2,72($fp)

nop

sw $2,20($sp)

sw $4,16($sp)

lw $7,68($fp)

move $6,$5

lw $5,64($fp)

lui $2,%hi($LC3)

addiu $4,$2,%lo($LC3)

jal printf

nop

li $2,1 # 0x1

sw $2,52($fp)

$L28:

lw $2,64($fp)

nop

mtc1 $2,$f0

nop

cvt.s.w $f0,$f0

lw $2,68($fp)

nop

mtc1 $2,$f2

nop

cvt.s.w $f2,$f2

lw $2,72($fp)

nop

mtc1 $2,$f4

nop

cvt.s.w $f4,$f4

lw $2,76($fp)

nop

mtc1 $2,$f6

nop

cvt.s.w $f6,$f6

lw $2,48($fp)

nop

sw $2,24($sp)

lw $2,44($fp)

nop

sw $2,20($sp)

lw $2,40($fp)

nop

sw $2,16($sp)

mfc1 $7,$f6

mfc1 $6,$f4

mov.s $f14,$f2

mov.s $f12,$f0

jal calculate_model4(float, float, float, float, int, int, int)

nop

mov.s $f2,$f0

li $3,1 # 0x1

lui $2,%hi($LC0)

lwc1 $f0,%lo($LC0)($2)

nop

c.eq.s $f2,$f0

nop

bc1t $L29

nop

move $3,$0

$L29:

andi $2,$3,0x00ff

beq $2,$0,$L30

nop

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,40($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $5,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,44($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $4,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,48($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $3,$2

lw $2,76($fp)

nop

sw $2,28($sp)

sw $3,24($sp)

lw $2,72($fp)

nop

sw $2,20($sp)

sw $4,16($sp)

lw $7,68($fp)

move $6,$5

lw $5,64($fp)

lui $2,%hi($LC4)

addiu $4,$2,%lo($LC4)

jal printf

nop

li $2,1 # 0x1

sw $2,52($fp)

$L30:

lw $2,64($fp)

nop

mtc1 $2,$f0

nop

cvt.s.w $f0,$f0

lw $2,68($fp)

nop

mtc1 $2,$f2

nop

cvt.s.w $f2,$f2

lw $2,72($fp)

nop

mtc1 $2,$f4

nop

cvt.s.w $f4,$f4

lw $2,76($fp)

nop

mtc1 $2,$f6

nop

cvt.s.w $f6,$f6

lw $2,48($fp)

nop

sw $2,24($sp)

lw $2,44($fp)

nop

sw $2,20($sp)

lw $2,40($fp)

nop

sw $2,16($sp)

mfc1 $7,$f6

mfc1 $6,$f4

mov.s $f14,$f2

mov.s $f12,$f0

jal calculate_model5(float, float, float, float, int, int, int)

nop

mov.s $f2,$f0

li $3,1 # 0x1

lui $2,%hi($LC0)

lwc1 $f0,%lo($LC0)($2)

nop

c.eq.s $f2,$f0

nop

bc1t $L31

nop

move $3,$0

$L31:

andi $2,$3,0x00ff

beq $2,$0,$L32

nop

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,40($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $5,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,44($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $4,$2

lui $2,%hi(op)

addiu $3,$2,%lo(op)

lw $2,48($fp)

nop

addu $2,$3,$2

lb $2,0($2)

nop

move $3,$2

lw $2,76($fp)

nop

sw $2,28($sp)

sw $3,24($sp)

lw $2,72($fp)

nop

sw $2,20($sp)

sw $4,16($sp)

lw $7,68($fp)

move $6,$5

lw $5,64($fp)

lui $2,%hi($LC5)

addiu $4,$2,%lo($LC5)

jal printf

nop

li $2,1 # 0x1

sw $2,52($fp)

$L32:

lw $2,48($fp)

nop

addiu $2,$2,1

sw $2,48($fp)

b $L33

nop

$L22:

lw $2,44($fp)

nop

addiu $2,$2,1

sw $2,44($fp)

b $L34

nop

$L21:

lw $2,40($fp)

nop

addiu $2,$2,1

sw $2,40($fp)

b $L35

nop

$L20:

lw $2,52($fp)

move $sp,$fp

lw $31,60($sp)

lw $fp,56($sp)

addiu $sp,$sp,64

j $31

nop

$LC6:

.ascii "Please input four integer (1~10)"

$LC7:

.ascii "%d %d %d %d"

$LC8:

.ascii "Input illege, Please input again"

$LC9:

.ascii "Sorry, the four integer cannot be calculated to get 24"

main:

addiu $sp,$sp,-56

sw $31,52($sp)

sw $fp,48($sp)

move $fp,$sp

lui $2,%hi($LC6)

addiu $4,$2,%lo($LC6)

jal puts

nop

$L38:

addiu $4,$fp,40

addiu $3,$fp,36

addiu $2,$fp,44

sw $2,16($sp)

move $7,$4

move $6,$3

addiu $2,$fp,32

move $5,$2

lui $2,%hi($LC7)

addiu $4,$2,%lo($LC7)

jal scanf

nop

lw $2,32($fp)

nop

blez $2,$L39

nop

lw $2,32($fp)

nop

slt $2,$2,11

beq $2,$0,$L39

nop

lw $2,36($fp)

nop

blez $2,$L39

nop

lw $2,36($fp)

nop

slt $2,$2,11

beq $2,$0,$L39

nop

lw $2,40($fp)

nop

blez $2,$L39

nop

lw $2,40($fp)

nop

slt $2,$2,11

beq $2,$0,$L39

nop

lw $2,44($fp)

nop

blez $2,$L39

nop

lw $2,44($fp)

nop

slt $2,$2,11

bne $2,$0,$L40

nop

$L39:

lui $2,%hi($LC8)

addiu $4,$2,%lo($LC8)

jal puts

nop

b $L38

nop

$L40:

lw $2,32($fp)

lw $3,36($fp)

lw $4,40($fp)

lw $5,44($fp)

nop

move $7,$5

move $6,$4

move $5,$3

move $4,$2

jal get24(int, int, int, int)

nop

sltu $2,$0,$2

andi $2,$2,0x00ff

bne $2,$0,$L41

nop

lui $2,%hi($LC9)

addiu $4,$2,%lo($LC9)

jal puts

nop

$L41:

move $2,$0

move $sp,$fp

lw $31,52($sp)

lw $fp,48($sp)

addiu $sp,$sp,56

j $31

nop

$LC0:

.word 1103101952

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote