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
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.