名为F0,F2,…,F28,F30。这样,DLX 就提供了32 个32位单精度浮点数寄存器或16 个64 位双精度浮点数寄存器。Windlx 教程中国石油大学这种设计是比较高效的。事实上,一般程序处理的数据总是某一类型,即要么是单精度,要么是双精度,若二者都出现,则可以把单精度扩展为双精度来处理。虽然双精度寄存器少了些,但这显然比在CPU 中分别提供32 个32 位单精度寄存器和32 个64 位双精度寄存器要好,因为后者在大多数情况下有一半寄存器在休息,而这是用户花了钱买回来的。 R0 的值永远是零。有这样一个特点,就可以利用这个寄存器由简单指令集来合成一组有用的操作。另外,还有一些特殊用途的寄存器,这些寄存器可以和通用寄存器交换数据,例如,浮点状态寄存器用来保存有关浮点数操作结果的信息,可以将其送到通用寄存器进行判断处理。在GPR 和FPR 之间还可以用一些专门的指令来传送数据。Windlx 教程中国石油大学1.3.2 DLX 的数据类型DLX 能处理的数据类型有8 位字节,16 位半字、32 位整数字以及32 位单精度浮点数和64 位双精度浮点数。在这个优化推荐的最小数据类型中,之所以有8 位字节,是因为DLX 不得不处理字符数据;之所以有16 位半字,是因为它在类似C 的语言中出现,在操作系统代码中半字数据类型也很流行,毕竟对这些代码而言,速度和长度同等重要;之所以有32 位整数字,是因为DLX 认为32位整数的处理范围一般而言已经足够;之所以有32 位单精度浮点数,是因为和16 位半字同样的理由;之所以有64 位双精度浮点数,是因为和32 位整数同样的理由。DLX 的操作主要面向32 位整数以及32 位或64 位浮点数。字节或半字在被调入32 位寄存器时,用零或者符号位填充32 位寄存器的高位剩余部分,一旦被调入寄存器,它们将按照32 位整数的方式进行计算。