Разница между инструкциями одинарной и двойной точности

Все мы знаем, что MIPS FPU имеет две точности, одинарную или двойную. Когда я посмотрел его в наборе команд, я обнаружил, что для одной и той же операции инструкции для одинарной и двойной точности не различаются.

Например, здесь из MIPS Architecture for Programmers Volume II: инструкция ADD.fmt введите описание изображения здесь

Независимо от того, является ли это двойной или одинарной точностью, операнд и код функции одинаковы. Откуда декодер знает, что это инструкция одинарной или двойной точности? Или какая-нибудь скрытая информация в 5-битной области fmt? Я не могу найти хорошие ответы от Google, кто-то может объяснить, как работает эта инструкция?

1 ответ

Решение

В документации MIPS есть подробности об этом в разделе "Поле формата операнда FPU". fmt поле содержит эти конкретные данные.

fmt Поле имеет длину 5 бит и может принимать следующие значения:

0-15: reserved
16: single
17: double
18-19: reserved
20: word
21: long
22-31: reserved

Word и Long не реализованы для ADD.S и ADD.D.

Другие вопросы по тегам