Я не могу представить себе, как это работает. Я пытаюсь перевести это простое задание с C на mips:
#define ARRAYSIZE 16
int intarray[] = {1, 5, -3, 6, 12, 21, 18, 44, 32, 9, 23, 10, 11, 99, 100, 24};
intarray[little] = intarray[ARRAYSIZE-1];
Итак, я определяю массив в данных
.data
intarray: .word 1, 5, -3, 6, 12, 21, 18, 44, 32, 9, 23, 10, 11, 99, 100, 24
Теперь проблема в том, что я знаю, как достаточно легко загрузить слово из этого массива.
lw $t0, intarray($a0)
Но я не могу понять, как сохранить в этот массив, потому что он не находится в регистре. Могу ли я даже манипулировать этим массивом или мне нужно создать дублирующий массив в регистрах?
sw сохраняет в регистр, но как это превратить массив из array[1, 2, 3] в array[1, 4, 3]. Я имею в виду, что могу сохранить array[1] или array[2] для регистрации $s0, но как это поможет мне вернуть мутированный массив array[1, 4, 3]. Вы понимаете, к чему я клоню?





Я смешивал lw и sw, думая, что сборка может сначала сбить с толку. Оказывается, я искал ответ, что вам нужно сначала загрузить базовый адрес массива (la address), а затем вызвать sw register address.
sw.