Так как вам дан адрес начала массива, вы знаете, что это также ваш первый элемент.Поскольку это массив типа int, я предполагаю, что это означает, что он будет использовать область памяти размером с слово в mips32, которое составляет 4 байта.Поэтому [1] расположен по адресу [0] + 4 байта.[2] находится по адресу [0] + 8 байт или [1] + 4 байт и т. Д. *
Из этого следует, что все, что вам нужно сделать, это просто выполнить цикл 10 раз, загружаяслово каждый раз и добавление значения.
Основной поток:
- Пусть count = 0, sum = 0 (сумма - ваше возвращаемое значение, поэтому $ v0)
- Загрузить значение слова из $ a0 в регистр
- Установить $ a0 = $ a0 + 4 (перейти от [count] к [count + 1], целое число 4 байта на mips32)
- Установить сумму = сумму + регистр, в который вы загрузили значение слова в
- count = count + 1
- , если count <10?(установите меньше чем, ответвление) перейдите к # 2 </li>
- переходу и ссылке (при условии, что наша сумма уже находится в $ v0)
Примечание: базовый адрес, который вам дают, ДОЛЖЕН быть словом-aligned.
Примечание по оптимизации: Вы можете оптимизировать количество выполняемых инструкций, установив для некоторого регистра значение $ a0 + 40 до шага 1. Это означает, что вы можете избавиться от шага 5, и шаг 6 будет проверять, если$ a0 меньше регистра, который вы установили перед шагом 1. (Последняя оптимизация перемещает шаг 4 в слот задержки шага 6. Если вы используете симулятор, это может не поддерживаться)