第2节 浮点单元用户编程模式
下面章节将描述 ColdFire 可选浮点型型单元的寄存器。浮点型型单元的用户编程模型,它包括下列寄存器:
8 个64 位浮点型数据寄存器(FP0-FP7)
32 位浮点型控制寄存器(FPCR)
32 位浮点型状态寄存器(FPSR)
32 位浮点型指令地址寄存器(FPIAR)
1.2.1 浮点型数据寄存器(FP0-FP7)
对于 68K/ColdFire 系列来讲,浮点型型数据寄存器和整型数据寄存器类似。64 位 的浮点型型数据寄存器总是以双精度格式来保存数据。所有外部操作数,不管源操作数 的格式怎样,在计算或保存到浮点型型数据寄存器中时,都被转换成双精度格式。复位 或置零操作会使得 FP0-FP7 变成正数的特性,而不是任何非数值类型(NANs)。
浮点型控制寄存器(FPCR):
如图 1-4,浮点型控制寄存器包括异常使能字节(EE)和模式控制字节(MC)。用 户可以通过 FMOVE 或 FRESTORE 读写 FPCR。处理器复位或恢复空状态会清零 FPCR。 当这个寄存器被清零时,FPU 不会产生异常。
表 1-2 描述了 FPCR 的域。
1.2.2 浮点型状态寄存器(FPSR)
浮点型状态寄存器,如图 1-5,包括浮点型条件码字节(FPCC)、浮点型异常状态字 节(EXC)和浮点型异常产生字节(AEXC)。用户可以读/写所有 FPSR 位。大多数浮点型 指令都可修改 FPSR。FPSR 通过 FMOVE 或 FRESTORE 指令来加载数据。处理器复位 或置零可清除 FPSR。
表 1-3 描述了 FPSR 域。
8 个64 位浮点型数据寄存器(FP0-FP7)
32 位浮点型控制寄存器(FPCR)
32 位浮点型状态寄存器(FPSR)
32 位浮点型指令地址寄存器(FPIAR)
1.2.1 浮点型数据寄存器(FP0-FP7)
对于 68K/ColdFire 系列来讲,浮点型型数据寄存器和整型数据寄存器类似。64 位 的浮点型型数据寄存器总是以双精度格式来保存数据。所有外部操作数,不管源操作数 的格式怎样,在计算或保存到浮点型型数据寄存器中时,都被转换成双精度格式。复位 或置零操作会使得 FP0-FP7 变成正数的特性,而不是任何非数值类型(NANs)。
浮点型控制寄存器(FPCR):
如图 1-4,浮点型控制寄存器包括异常使能字节(EE)和模式控制字节(MC)。用 户可以通过 FMOVE 或 FRESTORE 读写 FPCR。处理器复位或恢复空状态会清零 FPCR。 当这个寄存器被清零时,FPU 不会产生异常。

表 1-2 描述了 FPCR 的域。

1.2.2 浮点型状态寄存器(FPSR)
浮点型状态寄存器,如图 1-5,包括浮点型条件码字节(FPCC)、浮点型异常状态字 节(EXC)和浮点型异常产生字节(AEXC)。用户可以读/写所有 FPSR 位。大多数浮点型 指令都可修改 FPSR。FPSR 通过 FMOVE 或 FRESTORE 指令来加载数据。处理器复位 或置零可清除 FPSR。

表 1-3 描述了 FPSR 域。

1.2.3 浮点型指令地址寄存器(FPIAR)
ColdFire 指令通过管道可以同时执行整型和浮点型指令。这样会导致,为了响应浮 点数异常中断,程序计数器的值被处理器压入堆栈,而不能指向产生异常的指令。
对于那些可能产生异常中断的 FPU 指令,在 FPU 开始运行之前,32 位的 FPIAR 被加载为指令的程序计数器中的地址。如果出现 FPU 异常,中断处理机制可以通过 FPIAR 的内容来判断产生异常的指令。存取 FPCR、FPSR 或 FPIAR 的 FMOVE 指令和 FMOVEM 指令,不产生的浮点型异常,所以不会改变 FPIAR。复位或恢复空状态可以 清除 FPIAR。


