I am trying to convert this C++ program to MIPS, but having no experience in MIP
ID: 3711106 • Letter: I
Question
I am trying to convert this C++ program to MIPS, but having no experience in MIPS I am struggling.
//Program to calculate a person's day of birth
#include <iostream>
#include <cmath>
#include "stdafx.h"
using namespace std;
int main()
{
int Day, Month, Year, a, Temp, Temp2, Remainder;
int Total;
cout << "Enter Month as Integer: ";
cin >> Month;
cout << "Enter Day as Integer: ";
cin >> Day;
cout << "Enter Year as Integer: ";
cin >> Year;
//Figuring out last two digits
Temp = Year % 100;
Total = floor(Temp / 4);
Total = Total + Temp;
Total = Total + Day;
if (Month == 1) // January
{
Total = Total + 1;
}
if (Month == 2) //February
{
Total = Total + 4;
}
if (Month == 3) //March
{
Total = Total + 4;
}
if (Month == 4) //April
{
Total = Total + 0;
}
if (Month == 5) //May
{
Total = Total + 2;
}
if (Month == 6) //June
{
Total = Total + 5;
}
if (Month == 7) //July
{
Total = Total + 0;
}
if (Month == 8) //August
{
Total = Total + 3;
}
if (Month == 9) //September
{
Total = Total + 6;
}
if (Month == 10) //October
{
Total = Total + 1;
}
if (Month == 11) //November
{
Total = Total + 4;
}
if (Month == 12) //December
{
Total = Total + 6;
}
//Leap year and January and February
if (Month == 1) //Subtract 1 if January
{
Total = Total - 1;
}
if (Month == 2) //Subtract 1 if February
{
Total = Total - 0; //Somereason it works if you don't subtract one
}
//Leap Year
if ((Year % 4 == 0 && Year % 100 != 0) || (Year % 400 == 0))
{
Total = Total - 1;
}
/*May 10, 1983 (non leapyear) //Works
b) May 8, 1984 (leapyear) //Doesn't Work
c) Feb 16, 2016 (leapyear) //Works!
d) June 13, 2000 (leapyear) //Doesn't work
e) Feb 15, 2000 (leapyear) //Works!
f) July 13, 2100(non-leapyear) //Works!
g) Feb 16, 2100(non - leapyear*/ //Works!
a = floor(Year / 100);
Temp2 = a % 4; //Remainder
if (Temp2 == 0)
{
Total = Total + 6;
}
if (Temp2 == 1)
{
Total = Total + 4;
}
if (Temp2 == 2)
{
Total = Total + 2;
}
if (Temp2 == 3)
{
Total = Total + 0;
}
Remainder = Total % 7;
if (Remainder == 1) // Sunday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Sunday." << endl;
}
if (Remainder == 2) // Monday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Monday." << endl;
}
if (Remainder == 3) // Tuesday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Tuesday." << endl;
}
if (Remainder == 4) // Wednesday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Wednesday." << endl;
}
if (Remainder == 5) // Thursday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Thursday." << endl;
}
if (Remainder == 6) // Friday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Friday." << endl;
}
if (Remainder == 0) // Saturday
{
cout << "A Person born on " << Month << " - " << Day << " - " << Year << " was born on a Saturday." << endl;
}
return 0;
}
Explanation / Answer
Ans) The coding of C++ to MIPS is done and it is given below as per your requirement
MIPS code:
.LC0:
.ascii "Enter Month as Integer: "
.LC1:
.ascii "Enter Day as Integer: "
.LC2:
.ascii "Enter Year as Integer: "
.LC3:
.ascii "A Person born on "
.LC4:
.ascii " - "
.LC5:
.ascii " was born on a Sunday."
.LC6:
.ascii " was born on a Monday."
.LC7:
.ascii " was born on a Tuesday."
.LC8:
.ascii " was born on a Wednesday."
.LC9:
.ascii " was born on a Thursday."
.LC10:
.ascii " was born on a Friday."
.LC11:
.ascii " was born on a Saturday."
main:
daddiu $sp,$sp,-64
sd $31,56($sp)
sd $fp,48($sp)
sd $28,40($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(main)))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(main)))
ld $2,%got_page(.LC0)($28)
daddiu $5,$2,%got_ofst(.LC0)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
daddiu $2,$fp,24
move $5,$2
ld $4,%got_disp(std::cin)($28)
ld $2,%call16(std::basic_istream<char, std::char_traits<char> >::operator>>(int&))($28)
move $25,$2
1: jalr $25
nop
ld $2,%got_page(.LC1)($28)
daddiu $5,$2,%got_ofst(.LC1)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
daddiu $2,$fp,20
move $5,$2
ld $4,%got_disp(std::cin)($28)
ld $2,%call16(std::basic_istream<char, std::char_traits<char> >::operator>>(int&))($28)
move $25,$2
1: jalr $25
nop
ld $2,%got_page(.LC2)($28)
daddiu $5,$2,%got_ofst(.LC2)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
daddiu $2,$fp,28
move $5,$2
ld $4,%got_disp(std::cin)($28)
ld $2,%call16(std::basic_istream<char, std::char_traits<char> >::operator>>(int&))($28)
move $25,$2
1: jalr $25
nop
lw $2,28($fp)
li $3,1374355456 # 0x51eb0000
ori $3,$3,0x851f
mult $2,$3
mflo $3
mfhi $4
dins $3,$4,32,32
dsrl $3,$3,32
sll $3,$3,0
sra $4,$3,5
sra $3,$2,31
subu $4,$4,$3
li $3,100 # 0x64
mul $3,$4,$3
subu $2,$2,$3
sw $2,4($fp)
lw $2,4($fp)
bgez $2,.L2
nop
addiu $2,$2,3
.L2:
sra $2,$2,2
move $4,$2
ld $2,%got_disp(__gnu_cxx::__enable_if<std::__is_integer<int>::__value, double>::__type std::floor<int>(int))($28)
move $25,$2
1: jalr $25
nop
trunc.w.d $f0,$f0
mfc1 $2,$f0
sw $2,0($fp)
lw $3,0($fp)
lw $2,4($fp)
addu $2,$3,$2
sw $2,0($fp)
lw $2,20($fp)
lw $3,0($fp)
addu $2,$3,$2
sw $2,0($fp)
lw $3,24($fp)
li $2,1 # 0x1
bne $3,$2,.L3
nop
lw $2,0($fp)
addiu $2,$2,1
sw $2,0($fp)
.L3:
lw $3,24($fp)
li $2,2 # 0x2
bne $3,$2,.L4
nop
lw $2,0($fp)
addiu $2,$2,4
sw $2,0($fp)
.L4:
lw $3,24($fp)
li $2,3 # 0x3
bne $3,$2,.L5
nop
lw $2,0($fp)
addiu $2,$2,4
sw $2,0($fp)
.L5:
lw $3,24($fp)
li $2,5 # 0x5
bne $3,$2,.L7
nop
lw $2,0($fp)
addiu $2,$2,2
sw $2,0($fp)
.L7:
lw $3,24($fp)
li $2,6 # 0x6
bne $3,$2,.L8
nop
lw $2,0($fp)
addiu $2,$2,5
sw $2,0($fp)
.L8:
lw $3,24($fp)
li $2,8 # 0x8
bne $3,$2,.L10
nop
lw $2,0($fp)
addiu $2,$2,3
sw $2,0($fp)
.L10:
lw $3,24($fp)
li $2,9 # 0x9
bne $3,$2,.L11
nop
lw $2,0($fp)
addiu $2,$2,6
sw $2,0($fp)
.L11:
lw $3,24($fp)
li $2,10 # 0xa
bne $3,$2,.L12
nop
lw $2,0($fp)
addiu $2,$2,1
sw $2,0($fp)
.L12:
lw $3,24($fp)
li $2,11 # 0xb
bne $3,$2,.L13
nop
lw $2,0($fp)
addiu $2,$2,4
sw $2,0($fp)
.L13:
lw $3,24($fp)
li $2,12 # 0xc
bne $3,$2,.L14
nop
lw $2,0($fp)
addiu $2,$2,6
sw $2,0($fp)
.L14:
lw $3,24($fp)
li $2,1 # 0x1
bne $3,$2,.L15
nop
lw $2,0($fp)
addiu $2,$2,-1
sw $2,0($fp)
.L15:
lw $2,28($fp)
andi $2,$2,0x3
bne $2,$0,.L17
nop
lw $2,28($fp)
li $3,1374355456 # 0x51eb0000
ori $3,$3,0x851f
mult $2,$3
mflo $3
mfhi $4
dins $3,$4,32,32
dsrl $3,$3,32
sll $3,$3,0
sra $4,$3,5
sra $3,$2,31
subu $4,$4,$3
li $3,100 # 0x64
mul $3,$4,$3
subu $2,$2,$3
bne $2,$0,.L18
nop
.L17:
lw $2,28($fp)
li $3,1374355456 # 0x51eb0000
ori $3,$3,0x851f
mult $2,$3
mflo $3
mfhi $4
dins $3,$4,32,32
dsrl $3,$3,32
sll $3,$3,0
sra $4,$3,7
sra $3,$2,31
subu $4,$4,$3
li $3,400 # 0x190
mul $3,$4,$3
subu $2,$2,$3
bne $2,$0,.L19
nop
.L18:
lw $2,0($fp)
addiu $2,$2,-1
sw $2,0($fp)
.L19:
lw $2,28($fp)
li $3,1374355456 # 0x51eb0000
ori $3,$3,0x851f
mult $2,$3
mflo $3
mfhi $4
dins $3,$4,32,32
dsrl $3,$3,32
sll $3,$3,0
sra $3,$3,5
sra $2,$2,31
subu $2,$3,$2
move $4,$2
ld $2,%got_disp(__gnu_cxx::__enable_if<std::__is_integer<int>::__value, double>::__type std::floor<int>(int))($28)
move $25,$2
1: jalr $25
nop
trunc.w.d $f0,$f0
mfc1 $2,$f0
sw $2,8($fp)
lw $3,8($fp)
li $2,-2147483648 # 0xffffffff80000000
ori $2,$2,0x3
and $2,$3,$2
bgez $2,.L20
nop
addiu $2,$2,-1
li $3,-4 # 0xfffffffffffffffc
or $2,$2,$3
addiu $2,$2,1
.L20:
sw $2,12($fp)
lw $2,12($fp)
bne $2,$0,.L21
nop
lw $2,0($fp)
addiu $2,$2,6
sw $2,0($fp)
.L21:
lw $3,12($fp)
li $2,1 # 0x1
bne $3,$2,.L22
nop
lw $2,0($fp)
addiu $2,$2,4
sw $2,0($fp)
.L22:
lw $3,12($fp)
li $2,2 # 0x2
bne $3,$2,.L23
nop
lw $2,0($fp)
addiu $2,$2,2
sw $2,0($fp)
.L23:
lw $2,0($fp)
li $3,-1840709632 # 0xffffffff92490000
ori $3,$3,0x2493
mult $2,$3
mflo $3
mfhi $4
dins $3,$4,32,32
dsrl $3,$3,32
sll $3,$3,0
addu $3,$3,$2
sra $4,$3,2
sra $3,$2,31
subu $4,$4,$3
move $3,$4
sll $3,$3,3
subu $3,$3,$4
subu $2,$2,$3
sw $2,16($fp)
lw $3,16($fp)
li $2,1 # 0x1
bne $3,$2,.L25
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC5)($28)
daddiu $5,$2,%got_ofst(.LC5)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L25:
lw $3,16($fp)
li $2,2 # 0x2
bne $3,$2,.L26
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC6)($28)
daddiu $5,$2,%got_ofst(.LC6)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L26:
lw $3,16($fp)
li $2,3 # 0x3
bne $3,$2,.L27
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC7)($28)
daddiu $5,$2,%got_ofst(.LC7)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L27:
lw $3,16($fp)
li $2,4 # 0x4
bne $3,$2,.L28
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC8)($28)
daddiu $5,$2,%got_ofst(.LC8)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L28:
lw $3,16($fp)
li $2,5 # 0x5
bne $3,$2,.L29
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC9)($28)
daddiu $5,$2,%got_ofst(.LC9)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L29:
lw $3,16($fp)
li $2,6 # 0x6
bne $3,$2,.L30
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC10)($28)
daddiu $5,$2,%got_ofst(.LC10)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L30:
lw $2,16($fp)
bne $2,$0,.L31
nop
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(std::cout)($28)
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,24($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,20($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC4)($28)
daddiu $5,$2,%got_ofst(.LC4)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
lw $2,28($fp)
move $5,$2
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(int))($28)
move $25,$2
1: jalr $25
nop
move $3,$2
ld $2,%got_page(.LC11)($28)
daddiu $5,$2,%got_ofst(.LC11)
move $4,$3
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*))($28)
move $25,$2
1: jalr $25
nop
ld $5,%got_disp(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))($28)
move $4,$2
ld $2,%call16(std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)))($28)
move $25,$2
1: jalr $25
nop
.L31:
move $2,$0
move $sp,$fp
ld $31,56($sp)
ld $fp,48($sp)
ld $28,40($sp)
daddiu $sp,$sp,64
j $31
nop
__gnu_cxx::__enable_if<std::__is_integer<int>::__value, double>::__type std::floor<int>(int):
daddiu $sp,$sp,-48
sd $31,40($sp)
sd $fp,32($sp)
sd $28,24($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(__gnu_cxx::__enable_if<std::__is_integer<int>::__value, double>::__type std::floor<int>(int))))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(__gnu_cxx::__enable_if<std::__is_integer<int>::__value, double>::__type std::floor<int>(int))))
move $2,$4
sll $2,$2,0
sw $2,0($fp)
lw $2,0($fp)
mtc1 $2,$f0
cvt.d.w $f0,$f0
mov.d $f12,$f0
ld $2,%call16(floor)($28)
move $25,$2
1: jalr $25
nop
move $sp,$fp
ld $31,40($sp)
ld $fp,32($sp)
ld $28,24($sp)
daddiu $sp,$sp,48
j $31
nop
__static_initialization_and_destruction_0(int, int):
daddiu $sp,$sp,-48
sd $31,40($sp)
sd $fp,32($sp)
sd $28,24($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(__static_initialization_and_destruction_0(int, int))))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(__static_initialization_and_destruction_0(int, int))))
move $3,$4
move $2,$5
sll $3,$3,0
sw $3,0($fp)
sll $2,$2,0
sw $2,4($fp)
lw $3,0($fp)
li $2,1 # 0x1
bne $3,$2,.L37
nop
lw $3,4($fp)
li $2,65535 # 0xffff
bne $3,$2,.L37
nop
ld $2,%got_page(std::__ioinit)($28)
daddiu $4,$2,%got_ofst(std::__ioinit)
ld $2,%call16(std::ios_base::Init::Init())($28)
move $25,$2
1: jalr $25
nop
ld $6,%got_disp(__dso_handle)($28)
ld $2,%got_page(std::__ioinit)($28)
daddiu $5,$2,%got_ofst(std::__ioinit)
ld $4,%got_disp(std::ios_base::Init::~Init())($28)
ld $2,%call16(__cxa_atexit)($28)
move $25,$2
1: jalr $25
nop
.L37:
nop
move $sp,$fp
ld $31,40($sp)
ld $fp,32($sp)
ld $28,24($sp)
daddiu $sp,$sp,48
j $31
nop
_GLOBAL__sub_I_main:
daddiu $sp,$sp,-32
sd $31,24($sp)
sd $fp,16($sp)
sd $28,8($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(_GLOBAL__sub_I_main)))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(_GLOBAL__sub_I_main)))
li $5,65535 # 0xffff
li $4,1 # 0x1
ld $2,%got_page(__static_initialization_and_destruction_0(int, int))($28)
daddiu $2,$2,%got_ofst(__static_initialization_and_destruction_0(int, int))
move $25,$2
1: jalr $25
nop
move $sp,$fp
ld $31,24($sp)
ld $fp,16($sp)
ld $28,8($sp)
daddiu $sp,$sp,32
j $31
nop
Hope this Helps, if you have any doubs please comment i will get back to you and please thumbs up, thank you.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.