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

Translate the following C++ source code into MIPS assembly language. I am using

ID: 3890904 • Letter: T

Question

Translate the following C++ source code into MIPS assembly language. I am using the QtSPIM compiler.

/* C++ Program - Make Simple Calculator */

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
int a, b, res;
char choice, ch;
cout<<"0.Addition ";
cout<<"1.Subtraction ";
cout<<"2.Multiplication ";
cout<<"3.Division ";
cout<<"4.Exit ";
cout<<"Enter Your Choice : ";
cin>>choice;
switch(choice)
{
case '0' : cout<<"Enter two number : ";
cin>>a>>b;
res=a+b;
cout<<"Result = "<<res;
break;
case '1' : cout<<"Enter two number : ";
cin>>a>>b;
res=a-b;
cout<<"Result = "<<res;
break;
case '2' : cout<<"Enter two number : ";
cin>>a>>b;
res=a*b;
cout<<"Result = "<<res;
break;
case '3' : cout<<"Enter two number : ";
cin>>a>>b;
res=a/b;
cout<<"Result = "<<res;
break;
case '4' : exit(0);
break;
// default : cout<<"Wrong Choice..!!";
// break;
}
cout<<" ------------------------------------ ";
return 0;
}

Explanation / Answer

MIPS CODE:-

$LFB1024 = .

main:

addiu $sp,$sp,-48

sw $31,44($sp)

sw $fp,40($sp)

move $fp,$sp

lui $2,%hi($LC0)

addiu $5,$2,%lo($LC0)

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lui $2,%hi($LC1)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lui $2,%hi($LC2)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lui $2,%hi($LC3)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lui $2,%hi($LC4)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lui $2,%hi($LC5)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

addiu $2,$fp,36

move $5,$2

lui $2,%hi(_ZSt3cin)

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

jal _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_

nop

lb $2,36($fp)

nop

addiu $2,$2,-48

sltu $3,$2,5

beq $3,$0,$L2

nop

sll $3,$2,2

lui $2,%hi($L4)

addiu $2,$2,%lo($L4)

addu $2,$3,$2

lw $2,0($2)

nop

j $2

nop

.word $L3

.word $L5

.word $L6

.word $L7

.word $L8

lui $2,%hi($LC6)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

addiu $2,$fp,28

move $5,$2

lui $2,%hi(_ZSt3cin)

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

jal _ZNSirsERi

nop

move $3,$2

addiu $2,$fp,32

move $5,$2

move $4,$3

jal _ZNSirsERi

nop

lw $3,28($fp)

lw $2,32($fp)

nop

addu $2,$3,$2

sw $2,24($fp)

lui $2,%hi($LC7)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lw $5,24($fp)

move $4,$2

jal _ZNSolsEi

nop

b $L2

nop

lui $2,%hi($LC6)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

addiu $2,$fp,28

move $5,$2

lui $2,%hi(_ZSt3cin)

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

jal _ZNSirsERi

nop

move $3,$2

addiu $2,$fp,32

move $5,$2

move $4,$3

jal _ZNSirsERi

nop

lw $3,28($fp)

lw $2,32($fp)

nop

subu $2,$3,$2

sw $2,24($fp)

lui $2,%hi($LC7)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lw $5,24($fp)

move $4,$2

jal _ZNSolsEi

nop

b $L2

nop

lui $2,%hi($LC6)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

addiu $2,$fp,28

move $5,$2

lui $2,%hi(_ZSt3cin)

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

jal _ZNSirsERi

nop

move $3,$2

addiu $2,$fp,32

move $5,$2

move $4,$3

jal _ZNSirsERi

nop

lw $3,28($fp)

lw $2,32($fp)

nop

mult $3,$2

mflo $2

sw $2,24($fp)

lui $2,%hi($LC7)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lw $5,24($fp)

move $4,$2

jal _ZNSolsEi

nop

b $L2

nop

lui $2,%hi($LC6)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

addiu $2,$fp,28

move $5,$2

lui $2,%hi(_ZSt3cin)

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

jal _ZNSirsERi

nop

move $3,$2

addiu $2,$fp,32

move $5,$2

move $4,$3

jal _ZNSirsERi

nop

lw $3,28($fp)

lw $2,32($fp)

nop

bne $2,$0,1f

div $0,$3,$2

break 7

1:

mfhi $2

mflo $2

sw $2,24($fp)

lui $2,%hi($LC7)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

lw $5,24($fp)

move $4,$2

jal _ZNSolsEi

nop

b $L2

nop

move $4,$0

jal exit

nop

lui $2,%hi($LC8)

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

lui $2,%hi(_ZSt4cout)

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

jal _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

nop

move $2,$0

move $sp,$fp

lw $31,44($sp)

lw $fp,40($sp)

addiu $sp,$sp,48

j $31

nop

$LFB1028 = .

_Z41__static_initialization_and_destruction_0ii:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

sw $4,32($fp)

sw $5,36($fp)

lw $3,32($fp)

li $2,1 # 0x1

bne $3,$2,$L12

nop

lw $3,36($fp)

li $2,65535 # 0xffff

bne $3,$2,$L12

nop

lui $2,%hi(_ZStL8__ioinit)

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

jal _ZNSt8ios_base4InitC1Ev

nop

lui $2,%hi(__dso_handle)

addiu $6,$2,%lo(__dso_handle)

lui $2,%hi(_ZStL8__ioinit)

addiu $5,$2,%lo(_ZStL8__ioinit)

lui $2,%hi(_ZNSt8ios_base4InitD1Ev)

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

jal __cxa_atexit

nop

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1029 = .

_GLOBAL__sub_I_main:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

li $5,65535 # 0xffff

li $4,1 # 0x1

jal _Z41__static_initialization_and_destruction_0ii

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

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