Я пытаюсь создать хэш-таблицу с использованием сборки mips. Моя функция InsertKey
по какой-то причине не работает правильно. Консоль просто зависает без сообщения об ошибке, когда я пытаюсь ее использовать.Аргументы функции Mips и возвращаемые значения
InsertK:
li $v0, 4
la $a0, enterIntPrompt
syscall
li $v0, 5
syscall
move $a0, $v0 # key in a0
li $t0, 0
la $a1, Hash # table address in a1
bgt $a0, $t0, JInsertKey
li $v0, 4
la $a0, notInsertKeyMes
syscall
j whileloop
JInsertKey:
jal InsertKey
j whileloop
Я подозреваю, что я испортил свои пропущенные ценности где-то, но ничего не могу найти. В учебнике говорится, что рекомендуется использовать $v0
- $v2
регистры для возвращаемых значений вызовов функций и $a0
- $a3
для аргументов функции. Это код вызова функции InsertKey
:
InsertKey:
jal FindKey
move $t0, $v0 # position in t0
li $t1, -1
bne $t0, $t1, prints
bgt $s1, $s0, dostuff
li $v0, 4
la $a0, hashTableFullMes
syscall
jr $ra
dostuff:
jal HashFunction
move $t0, $v0
li $t3, 4
multu $t0, $t3
mflo $t3
la $a1, Hash
add $a1, $a1, $t3 # a1 adress hash[position]
sw $a0, ($a1)
addi $s0,1
jr $ra
prints:
li $v0, 4
la $a0, keyAlreadyInTableMes
syscall
jr $ra
FindKey
и HashFunction
работают должным образом. Может ли кто-то идентифицировать проблему с этим кодом? Я действительно из идей ..
Редактировать: Findkey
возвращает позицию найденного ключа еще -1
.
Выполнение кода в отладчике поможет вам понять, почему он не работает: https://courses.missouristate.edu/KenVollmar/mars/Help/MarsHelpDebugging.html – markgz
Я действительно сделал, пользуюсь QTSpim, и это просто сокрушает, когда я пытаюсь вставить номер –