Расширенная константа сдвига знака в MIPS

Почему мы сдвигаем на 2 знаковую расширенную 16-битную константу в инструкции ветвления в MIPS? Я смущен этой идеей. Что хорошего это смещение дает расширенной знаковой 16-битной константе. Вот картинка:

введите здесь описание изображения

С уважением


person Alfred    schedule 07.12.2012    source источник


Ответы (2)


Инструкции MIPS имеют размер 32 бита = 4 байта, поэтому смещение перехода указывается как кратное 4, то есть смещение перехода 1 = 4 байта. Это обеспечивает гораздо больший диапазон смещений ветвей, чем если бы смещение было указано в байтах (поскольку тогда было бы два избыточных бита). Сдвиг влево на 2 — это, конечно, то же самое, что и умножение на 4.

person Paul R    schedule 07.12.2012
comment
Извините, но что вы подразумеваете под смещением ветвления (или 16-битной константой (2 байта)) из 1 = 4 байта? - person Alfred; 07.12.2012
comment
Инструкция ветвления является относительной ветвью — ей нужно знать, сколько инструкций относительно текущего ПК нужно пропустить. Это называется смещением ветки. Чтобы вычислить новый адрес ПК, вы умножаете это 16-битное смещение на 4, добавляете его к текущему ПК, и тогда он становится новым ПК. - person Paul R; 07.12.2012

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

person Amin Sarihi    schedule 05.05.2018