Я не понимаю, как вычисляется адрес ветвления в MIPS.
Вот большая картина того, что происходит с программным счетчиком (ПК): PC = PC + 4 + ((signed-extended offset)<<2)
Я вижу причину, по которой число смещений signed-extended
перед добавлением к PC
, это просто 16-битное значение, которое нужно превратить в 32-битное значение, но зачем нам left double shift
со знаком расширенный номер ???
(Также <<2
означает, что мы умножаем число на 4)
Пока мы на эту тему, я расширю вопрос:
Когда мы смещаемся от непосредственного значения (регистра), почему мы не делаем <<2
?
Спасибо!