浮点执行环境的寄存器主要是8个通用数据寄存器和几个专用寄存器,它们是状态寄存器、控制寄存器、标记寄存器等。
FPU浮点数计算系统(浮点处理单元): 8个80位浮点寄存器,16位状态寄存器,16位控制寄存器,16位标识寄存器。
8个浮点数据寄存器(FPU Data Register),编号FPR0 ~ FPR7。每个浮点寄存器都是80位的,以扩展精度格式存储数据。当其他类型数据压入数据寄存器时,PFU自动转换成扩展精度;相反,数据寄存器的数据取出时,系统也会自动转换成要求的数据类型。8个浮点数据寄存器组成首尾相接的堆栈,当前栈顶ST(0)指向的FPRx由状态寄存器中TOP字段(16位中的某3位)指明。数据寄存器按照“后进先出”的堆栈原则工作,并且首尾循环。
向数据寄存器传送(Load)数据时就是入栈,堆栈指针TOP先减1(从高位向低位压数据),再将数据压入栈顶寄存器;
从数据寄存器取出(Store)数据时就是出栈,先将栈顶寄存器数据弹出,再修改堆栈指针使TOP加1。从低位到高位弹出数据,弹数据是正顺序的
浮点寄存器栈有首尾循环相连的特点。例如,若当前栈顶TOP=0(即ST(0) = PFR0),那么,入栈操作后就使TOP=7(即使ST(0) = PFR7),数据被压入PFR7。所以,浮点数据寄存器常常被称为浮点数据栈。
为了表明浮点数据寄存器中数据的性质,对应每个FPR寄存器,都有一个2位的标记(Tag)位,这8个标