Я пытаюсь проверить, является ли набор строк палиндромом или нет. Я удостоверился, что проверил длину строки так, чтобы, если это достигает нуля, это вернулось бы к последней букве в строке. Я не уверен, правильно ли я это сделал. Затем я сравниваю последний и первый символ строки и продолжаю, пока она не достигнет середины. Вот что у меня сейчас есть:
CheckPalindrome:
addi $t0, $a0, 0
addi $t1, $t0, 0
StrLen:
lbu $t2, 0($t1)
beq $t2, $0, End #If equal to 0 end loop
addi $t1, $t1, 1
j StrLen #Loop
End:
addi $t1, $t1, -1
Compare:
#If string is less than 2 then is palindrome
slti $t0, $t0, 2
bne $t0, $0, True
#Compare first and last characters
lbu $t0, 0($a0) #load first character to t0
addi $t1, $t1, -1 #t1 points to the last letter in string
lbu $t1, 0($t1) #load last character into t1
add $t1, $t1, $a0
bne $t0, $t1, False #If first and last char not equal, return false
addi $a2, $a2, -2
addi $a0, $a0, 1
j Compare
True:
addi $v0, $0, 1
jr $ra
False:
addi $v0, $0, 0
jr $ra
Токовый выход:
is not a palindrome.
a is not a palindrome.
b is not a palindrome.
aba is not a palindrome.
abba is not a palindrome.
baab is not a palindrome.
ababa is not a palindrome.
aabba is not a palindrome.
abbab is not a palindrome.
Это, очевидно, не правильно, так что любой вклад в то, как это исправить, было бы замечательно.