Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Convert the following C++ code to MIPS assembly: int arr[] = {1,2,3,4,5,4,3,2,1}; int beg = 0; int end = 8; int isPalindrome = 1; while(beg

Convert the following C++ code to MIPS assembly:

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--;

}

_______________________________________________________________________________

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:

[insert solution here]

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

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

Recommended Textbook for

Data Management Databases And Organizations

Authors: Watson Watson

5th Edition

0471715360, 978-0471715368

More Books

Students also viewed these Databases questions