Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Convert the given C++ code into MIPS assembly. Please do not modify the C++ code itself. You are only allowed to make modifications to the

Convert the given C++ code into MIPS assembly. Please do not modify the C++ code itself. You are only allowed to make modifications to the assembly file. Start writing your code below the main: label and above the exit: label. For this project stay BETWEEN these labels.

When doing a C++ to MIPS conversion, it can be done in the following steps:

1 Assign variables to registers. When inspecting code, any constant values in expressions may need to be assigned to temporary registers.

2 Initialize variables to registers. (actually put the values into the registers.)

3 Then you may begin converting the rest of the code.

Expected Output:

Sum: 7179

Reversed Number: 98654

is Palindrome: 1

__________________________________________________________________________

Base MIPS Code:

.data

endl: .asciiz " " # used for cout << endl;

sumlbl: .asciiz "Sum: " # label for sum

revlbl: .asciiz "Reversed Number: " # label for rev

pallbl: .asciiz "Is Palindrome: " # label for isPalindrome

sumarr: .word 1

.word 3

.word 44

.word 66

.word 88

.word 90

.word 9

.word 232

.word 4325

.word 2321

arr: .word 1

.word 2

.word 3

.word 4

.word 5

.word 4

.word 3

.word 2

.word 1

.text

# sum --> $s0

# address of sumarr --> $s1

# rev --> $s2

# num --> $s3

# isPalindrome --> $s4

# address of arr --> $s5

# i --> $t0

# beg --> $s6

# end --> $s7

# d --> $t1

# 10 --> $t2

# 100 --> $t3

main:

exit:

la $a0, sumlbl # puts sumlbl into arg0 (a0 register) for cout

addi $v0, $0, 4 # puts 4 in v0 which denotes we are printing a string

syscall # make a syscall to system

move $a0, $s0 # puts sum into arg0 (a0 register) for cout

addi $v0, $0, 1 # puts 1 in v0 to denote we are printing an int

syscall # make a syscall to system

la $a0, endl # puts the address of the string endl into a0

addi $v0, $0, 4 # puts 4 into v0 saying we are printing a string

syscall

la $a0, revlbl # puts revlbl into arg0 (a0 register) for cout

addi $v0, $0, 4 # puts 4 in v0 which denotes we are printing an string

syscall # make a syscall to system

move $a0, $s2 # puts rev into arg0 (a0 register) for cout

addi $v0, $0, 1 # puts 1 in v0 to denote we are printing an int

syscall # make a syscall to system

la $a0, endl # puts the address of the string endl into a0

addi $v0, $0, 4 # puts 4 into v0 saying we are printing a string

syscall

la $a0, pallbl # puts pallbl into arg0 (a0 register) for cout

addi $v0, $0, 4 # puts 4 in v0 which denotes we are printing a string

syscall # make a syscall to system

move $a0, $s4 # puts isPalindrome into arg0 (a0 register) for cout

addi $v0, $0, 1 # puts 1 in v0 to denote we are printing an int

syscall # make a syscall to system

la $a0, endl # puts the address of the string endl into a0

addi $v0, $0, 4 # puts 4 into v0 saying we are printing a string

syscall

addi $v0,$0, 10

syscall

__________________________________________________________________________

Equivalent C++ Code:

#include

using namespace std;

int main(void)

{

int sum = 0;

int size = 10;

int sumarr[] = {1,3,44,66,88,90,9,232,4325,2321};

for(int i = 0; i < size; i++){

sum = sum + sumarr[i];

}

int num = 45689;

int rev = 0;

int d = -1;

while( num > 0){

d = num % 10;

rev = rev*10 + d;

num = num / 10;

}

int arr[] = {1,2,3,4,5,4,3,2,1};

int beg = 0;

int end = 8;

int isPalindrome = 1;

while(beg < end){

if (arr[beg] != arr[end]){

isPalindrome = -1;

break;

}

beg++;

end--;

}

cout << "Sum: " << sum << endl;

cout << "Reversed Number: " << rev << endl;

cout << "Is Palindrome: " << isPalindrome << endl;

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions

Question

a. When did your ancestors come to the United States?

Answered: 1 week ago

Question

d. What language(s) did they speak?

Answered: 1 week ago

Question

e. What difficulties did they encounter?

Answered: 1 week ago