Разница между инструкциями одинарной и двойной точности
Все мы знаем, что 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.