Диапазон MIPS инструкции перехода - PullRequest
7 голосов
/ 27 января 2012

Я читаю книгу Паттерсона и Хеннесси " Организация и дизайн компьютеров " и заинтересовался MIPS.

У меня есть сомнения в нахождении диапазона инструкции перехода / перехода. Также при определении количества переходов / инструкций перехода необходимо перейти по конкретному адресу.

Может ли кто-нибудь дать объяснение того, как это должно быть рассчитано, т. Е. Рассматривать ПК по определенному адресу и находить количество инструкций перехода / перехода, необходимых для перехода на другой адрес? Например, что если ПК имеет значение 0x10001010, каков диапазон адресов команд перехода и перехода?

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

1 Ответ

11 голосов
/ 27 января 2012

Следующее все для MIPS-32.

Команды

Branch B, BEQ, BNE, etc. имеют 16-битное поле со смещением word Signed со знаком, позволяющее перейти на адрес +/- 128kBytes из текущего местоположения. Команда перехода J указывает адрес в текущей области размером 256 МБ, заданной старшими 4 битами ПК: 26 << 2 бита (это <strong>не относительный адрес). Чтобы перейти к произвольному адресу в любом месте адресного пространства 4 ГБ, используйте JR (регистр перехода), который переходит на адрес, содержащийся в регистре общего назначения.

Для перехода к произвольному адресу требуется либо одна ветвь, либо инструкция перехода, либо загрузка регистра, за которой следует JR, в зависимости от того, как далеко находится адрес.

Лучшая книга для программирования MIPS по-прежнему См. MIPS Run . Справочные руководства по архитектуре MIPS также можно найти по адресу mips.com (требуется регистрация). Наиболее актуальным документом является Архитектура MIPS32® для программистов, том II: Набор инструкций MIPS32® .

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