«необходимость пересылки» указывает на то, что вы не понимаете пересылку.Это оптимизация.В этом нет необходимости.
Оптимизация не должна влиять на семантику.Сохранение значения в $0
и последующее чтение значения $0
должны возвращать 0 в соответствии с обычной семантикой, не ранее сохраненное значение.Тем не менее, пересылка перенаправит сохраненное значение.
Теперь возникает вопрос, почему $0
может использоваться в качестве места хранения.Это просто логика RISC наличия ортогональных наборов команд.На архитектурах, отличных от MIPS, это несколько более полезно, поскольку эти операции с отбрасываемыми значениями все еще могут устанавливать флаги.