从数组中检索数据(似乎无法使其正常工作)

时间:2019-02-18 04:26:29

标签: mips

我目前正在MIPS中的回文函数上工作,该函数接受一个char数组,如果不是回文,则返回0,否则返回1。除了在索引i上找到数据的那一部分外,其他所有东西似乎都在工作和array.length-i-1。如果有人可以引导我朝正确的方向前进,我将非常感激。

这是我要使用的Java代码:

<div class="wrapper">
  <p>Text Content</p>
  <p>
    <img class="my" src="https://i.imgur.com/Spk75ST.jpg" />
  </p>
</div>

这是回文功能:

int Palindrome(char[] s) {
    for(int i = 0; i < (s.length / 2); i++) {
        if(s[i] != s[s.length - 1 - i])
            return 0;
    }
    return 1;
}

主要内容:

palindrome:
# Get length of array and store it in $t1
addi $sp, $sp, -8
sw $ra, 0($sp)
sw $a0, 4($sp)
li $t1, 0

lengthWhile:
lw $t2, 0($a0)
beq $t2, $zero, startPalindrome
addi $t1, $t1, 1
addi $a0, $a0, 4
j lengthWhile

startPalindrome:
div $t2, $t1, 2       # Stores a.length / 2 into $t2
add $t3, $t3, $zero   # i value (0 - (a.length/2 - 1))
add $t4, $t4, $t1
subi $t4, $t4, 1      # a.length-1

# $t1 = a.length
# $t2 = a.length / 2
# $t3 = i
# $t4 = a.length - 1

palLoop:
bge $t3, $t2, exitLoop
sub $t4, $t4, $t3 # Puts a.length-1-i into $t4

sll $t5, $t3, 2
add $t6, $a0, $t5
lw $s1, 0($t6)

sll $s3, $t4, 2
add $t7, $a0, $s3
lw $s2, 0($t7)

bne $s1, $s2, return0

# Increase i and start loop again
addi $t3, $t3, 1
j palLoop

return0:
li $v0, 0
jr $ra  

exitLoop:
li $v0, 1
jr $ra  

在此先感谢您的帮助。 (要指定,palLoop是我遇到问题的地方。)

1 个答案:

答案 0 :(得分:0)

不是您问题的直接组成部分,而是charArray:.word'a','b','c','d','c','w','a'实际上是包含chatarter的单词数组值,而不是字符数组。

当您在各处使用单词数组时,这似乎可以正常工作,但是如果使用正确的字符数组,则不会正常工作。

加上$ t3,$ t3,$ zero是t3 = t3 + 0-之前的t3是什么?

添加$ t4,$ t4,$ t1-相同的评论

sub $ t4,$ t4,$ t3#将a.length-1-i放入$ t4-将覆盖a.length-1(t4),因此在第二遍循环中不会正确。 / p>