Не понимаю, как эта инструкция возвращает вам значение A [f] - PullRequest
0 голосов
/ 23 сентября 2019

Я делаю домашнее задание для класса Computer Architecture, где мне нужно загрузить значение A [f] из памяти, используя инструкции MIPS, но предоставленное решение не имеет смысла для меня.Очевидно, я очень новичок в этом, и я знаю, что неправильно понимаю некоторые важные компоненты работы памяти.

Учитывая, что f хранится в $ s0, а массив A начинается с адреса, хранящегося в $ s6,как инструкция "add $ t0, $ s6, $ s0" может получить A [f]?

Допустим, значение f равно 5, а массив A начинается с 0x000100.Разве «добавление $ t0, $ s6, $ s0» не дает вам 0x000105?Это не может быть адрес A [5].

1 Ответ

1 голос
/ 23 сентября 2019

Согласны ли вы, что адрес A [0] равен 0x100?

Тогда , если A - массив байтов, адрес A [5] будет 0x105.

Однако , если A - массив слов, то адрес A [5] будет 0x100 + 5 * 4 или 0x114.

Итак, вы видите, как размер элементов массива имеет все значение?Мы должны масштабировать индекс по размеру (в байтах) элементов.

... Кроме того, вычисленный индексный адрес должен использоваться в инструкции загрузки памяти ... если вы хотите получитьзначение из элемента массива или инструкция хранилища памяти, если вы хотите обновить значение элемента массива.

...