Как сделать обновление массива в MIPS? - PullRequest
1 голос
/ 11 февраля 2011

Я пытаюсь создать массив, а затем обновить значения определенных ячеек, если это необходимо.Из того, что я знаю, использование стекового фрейма было бы лучшим подходом, но я не могу заставить его работать.Кто-нибудь может указать мне правильное направление?

Спасибо!

1 Ответ

2 голосов
/ 11 февраля 2011

Вы уже должны хорошо понимать, как работает манипулирование массивами в языке, подобном C.

Если вы хотите поместить массив в текущий фрейм стека и манипулировать им там (и понимать преимущества и проблемы этого), вам следует сделать следующее:

  1. Сначала обратите внимание на текущее значение регистра указателя стека ($sp). Вы будете использовать это как указатель на начало массива. Сохраните его в другом реестре.
  2. Сначала увеличьте регистр указателя стека ($sp) на сколько байтов будет массив. Это даст вам достаточно места для работы.
  3. Если вы хотите обновить массив, вычислите адрес начала массива плюс индекс массива. Например, чтобы написать или прочитать элемент 5, добавьте 5 в начало массива, умноженное на размер слова. На 32-битном компьютере умножьте его на 4.
  4. Используйте инструкцию sw для сохранения слова в массиве по этому адресу и используйте lw для загрузки слова.
...