Альтернатива для инструкции SW MIPS - PullRequest
0 голосов
/ 28 марта 2019

Какая альтернатива для сохранения слова из регистра в ОЗУ? Например, я могу объяснить команду lw как lui, ori. Как можно хранить 4 байта в оперативной памяти без использования sw?

1 Ответ

0 голосов
/ 29 марта 2019

Прежде всего, lui / ori создает значение в регистре сразу, без доступа к памяти данных. Они никоим образом не эквивалентны lw. Возможно, вы думаете о li, который является псевдоинструкцией для lui и / или ori. Только инструкции загрузки могут получить доступ к памяти; немедленные инструкции ALU берут данные из самой инструкции, но это не имеет значения.


MIPS предоставляет пары инструкций для загрузки / сохранения левой и правой частей слова без выравнивания. Магазины: SWL (слева) и SWR (слово магазина справа).

Их эффект зависит от режима endian вашего MIPS (он поддерживает big и little endian). MARS имитирует MIPS в режиме с прямым порядком байтов.

В режиме с прямым порядком байтов SWL $t1, buf сохраняет старший байт $ t1 в первый байт buf для выровненного buf.

В режиме с прямым порядком байтов на адресе, который выровнен (например, sw требует 1 ), SWR действует как SW, сохраняя все 4 байта.

Эти инструкции интересны тем, что они могут изменять от 1 до 4 байтов в слове. Включая 3 байта, которые вы не можете сделать с одним sb (байт) или sh (полуслово).


http://db.cs.duke.edu/courses/fall02/cps104/homework/lwswlr.html объясняет, как использовать инструкции SPARC с тем же именем. Я думаю, что MIPS (в режиме с прямым порядком байтов) будет таким же, а MIPS в режиме с прямым порядком байтов, как имитирует MARS, похож на это, но в обратном порядке.

Так что в режиме с прямым порядком байтов, я думаю, swl эквивалентно sw для выровненных адресов, но я не проверял.


Сноска 1: MIPS32R6 удален LWL / R и требует LW для поддержки невыровненного сохранения / загрузки Википедия не упоминает магазины для этого, только загружает.

См. Также https://www.linux -mips.org / wiki / Alignment : Linux MIPS имеет опцию ядра для эмуляции невыровненной загрузки / хранения вместо доставки SIGBUS на невыровненных LW или SW.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...