Копирование элементов из одного массива в другой в сборке MIPS - PullRequest
1 голос
/ 24 февраля 2011

Я новичок в 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 - адрес первого элемента во 2-м.

1 Ответ

0 голосов
/ 24 февраля 2011

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

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% точными, но я верю, что это даст вам возможность начать.

...