2015-07-09 9 views
2

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

Например, вот из MIPS Architecture For Programmers Volume II:, инструкции ADD.fmt enter image description here

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

ответ

3

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

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

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

Слово и долго Unimplemented для ADD.S и ADD.D.

+0

Область fmt в инструкции ADD.fmt является только 5-разрядной. Но в вашем ответе fmt содержит полностью 32-битный регистр. Является ли это fmt отдельным регистром или чем-то еще? Когда мы реализуем эту инструкцию, является ли аппаратное обеспечение двух разных этапов? Я имею в виду, что если FPU поддерживает двойную точность, тогда аппаратное обеспечение имеет двойную точность и независимо от того, какая инструкция является одиночной или двойной. –

+0

Я написал «возможные ** значения **», а не битовые позиции. 5 бит - 0-31. – karatedog

+0

@ShuaiyuJiang Я обновил ответ, чтобы избежать дальнейших путаниц. – karatedog