Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write a MIPS function that returns 1 if the input string is a palindrome and returns 0 otherwise; The address of the string will be

Write a MIPS function that returns 1 if the input string is a palindrome and returns 0 otherwise; The address of the string will be passed in using register $a0 and the resulting value should be returned in $v0. Here a string is a palindrome if it reads the same in forward or backward direction (including white spaces, punctuation marks, and so on, but is case insensitive (i.e., A and a are considered to be the same)). Note the string is ended with \0 (C/C++ convention). You need to test your program using test_palindrome.s and include the results (shown on the console) in the pdf file to be submitted.

test_palindrome.s:

# Register usage

# $s7 - save $ra

# $s2 - current address of the string to be tested

# $s3 - the next of the last string to be tested

# $a0 - for function parameter / syscall parameter

# $v0 - syscall number / function return value

.text

.globl main

main:

addu $s7, $ra, $zero, # Save the ra

la $s2, test_str # Load the starting address of the array

la $s3, is_pali_msg, # the next of last address

pali_test_loop:

lw $a0, 0($s2) # $a0 is the address of the string

li $v0, 4 # system call to print a string

syscall # print string

li $v0, 4 # print a new line

la $a0, newline

li $v0, 4

syscall

lw $a0, 0($s2) # $a0 is the address of the string

jal palindrome # call palindrome

beq $v0, $zero, pali_no #if $v0 is 0, it is not a palindrome

li $v0, 4 #it is a palindrome

la $a0, is_pali_msg

syscall

j pali_test_end

pali_no: #it is not a palindrome

li $v0, 4

la $a0, not_pali_msg

syscall

pali_test_end:

li $v0, 4

la $a0, newline

syscall

addiu $s2, $s2, 4

lw $a0, 0($s2)

beq $a0, $s3, pali_done

j pali_test_loop

pali_done:

li $v0, 10

syscall

addu $ra, $zero, $s7 #restore $ra since the function calles

#another function

jr $ra

add $zero, $zero, $zero

add $zero, $zero, $zero

########## End of main function #########

.data

#The following examples were copied from

# http://en.wikipedia.org/wiki/Palindrome

pali1:

.asciiz "aba" #Brazilian Portuguese: A valid palindrome

pali2:

.asciiz "NolesELon" #A valid palindrome

pali3:

.asciiz "Stressed Desserts" # A valid palindrome

pali4:

.asciiz "palindromes" # Not a palindrome

pali5:

.asciiz "tattarRATTAT" # A valid palindrome

is_pali_msg:

.asciiz " The string is a palindrome."

not_pali_msg:

.asciiz " The string is not a palindrome."

newline:

.asciiz " "

test_str:

.word pali1, pali2, pali3, pali4, pali5, is_pali_msg

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

Database Administrator Limited Edition

Authors: Martif Way

1st Edition

B0CGG89N8Z

More Books

Students also viewed these Databases questions

Question

=+14.4. 1 Let C be the set of continuity points of F.

Answered: 1 week ago