单精度指令和双精度指令的区别

Difference between single and double precision instructions

我们都知道MIPS FPU有两种精度,单精度或双精度。我看指令集的时候,发现同一个操作,单精度和双精度的指令没有区别。

例如,这里来自 MIPS Architecture For Programmers Volume II: ,指令 ADD.fmt

无论是双精度还是单精度,操作数和功能码都是一样的。解码器如何知道它是单精度还是双精度指令?或 5 位 fmt 区域中的任何隐藏信息?我无法从 google 找到任何好的答案,谁能解释一下这个指令是如何工作的?

MIPS 文档在 "FPU Operand Format Field" 下有这方面的详细信息。 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。