Копирование элементов из одного массива в другой в сборке MIPS

Я новичок в MIPS и пытаюсь скопировать элементы из одного массива в другой. Я не уверен, как это сделать. На самом деле не имеет значения, какого размера массив, но давайте просто скажем, что его размер 10. Я немного слаб с циклами MIPS и немного запутался, как действовать дальше.

add $s0, $zero, $zero
add $t0, $zero, $zero
lui $s0, 0x1001
ori $s0,$s0,0
lui $t0, 0x1001
ori $t0, $t0, 0x0040

Там моя инициализация с $s0, являющимся адресом первого элемента в первом массиве, и $t0, являющимся адресом первого элемента во втором.


person Brian    schedule 24.02.2011    source источник


Ответы (1)


Я не верю, что предоставленный вами код верен, но если это так, вы должны сделать что-то вроде этого:

xor $t1, $t1, $t1          ; Zero out $t1
lw $t2, array_length       ; Load the length of the array in $t2
loop_start:

  lb $t3, $s0              ; Load the next byte from $s0 into $t3
  sb $t3, $t0              ; Store the by in $t3 into $t0

  addi $s0, $s0, 1         ; Move to the next byte in the source
  addi $t0, $t0, 1         ; Move to the next byte in the destination
  addi $t1, $t1, 1         ; increment the counter

blt $t1, $t2, loop_start   ; Jump to the start of the loop of there are more bytes

Отказ от ответственности: я не программировал в MIPS со времен колледжа, поэтому этот код может быть не на 100% точным, но я считаю, что он даст вам отправную точку.

person Sparafusile    schedule 24.02.2011