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