Mips x32 с использованием массива - PullRequest
0 голосов
/ 23 марта 2011

я пишу этот код для одного из моих назначений, и мне нужно иметь массив размером 128, который я делаю с помощью

drops: .space 128

чтобы я мог загрузить это конкретное место в каплях и сохранить для него число 0-8 .....

например .... скажем, случайное число было 32, и я был на первой итерации цикла он будет хранить 0 в 32-м месте массива если бы я был во 2 итерации массива ... он бы хранил 1 в случайном числе, например 92..spot

вот мой код:

Сначала я сделал все в своем массиве -1, чтобы я мог проверить, что-то в нем есть ...

storeArray: 

 la $t6, drops
 la $t1, 0  #counter


loopStoreRandom:

    move $a0, $s5   # send x 
    jal getDrop
    move $t2, $v0 #t2 has a random number 

    add $t6, $t6, $t2  #random + the whole   ---wrong

    lb $t3, ($t6)       
    bne $t3, -1, loopStoreRandom


    addi $t1, $t1, 1
    beq $t1, 128, exit
    j loopStoreRandom

так что, как вы видите, я хотел бы что-то, что я мог бы просто походить на sb $t1, $t2($t6), но я не могу

Ответы [ 2 ]

0 голосов
/ 11 сентября 2015
jal getDrop
move $t2, $v0 #t2 has a random number 

Предполагая, что v0 возвращается из getDrop, будет выполнена инструкция перемещения BEORE getDrop будет выполнена, так как она будет выполнена как часть интервала задержки jal.Таким образом, T2 не будет содержать возвращенное значение getDrop.

должно быть:

jal getDrop
nop

move $t2, $v0
0 голосов
/ 23 марта 2011

Вы не восстанавливаете $ t6 каждый цикл, поэтому указатель отключается после первого цикла.

Move

la $t6, drops

внутри цикла.

...