80386虽然是一个通用微处理器,但其指令并不是非常适用于数学计算。因此若使用80386来执行数学计算,那么就需要编制非常复杂的程序,而且执行效率也相对较低。80387作为80386的辅助处理芯片,极大地扩展了程序员的编程范围。以前程序员不太可能做到的事,使用协处理器后就可以很容易地,并且快速而精确地完成。 80387具有一组特别的寄存器。这组寄存器可以让80387直接操作比80386所能处理的大或小几个数量级的数值。80386使用2进制补数方式表示一个数。这种方法不适合用来表示小数。而80387并不使用2的补数方法来表示数值,它使用了IEEE标准754规定的80位(10个字节)格式。这种格式不仅具有广泛的兼容性,而且能够使用二进制表示极大(或极小)的数值。例如,它能表示大到1.21×104932数值,也能处理小到3.3×10-4932的数。80387并不保持固定小数点的位置,如果数值小的话就多使用一些小数位,如果数值大的话就少用几位小数位。因此小数点的位置是可以“浮动”的。这也是术语“浮点”数的由来。 为支持浮点运算,80387中包含三组寄存器,如图11-5所示。① 8个80位长的数据寄存器(累加器),可用于临时存放8个浮点操作数,并且这些累加器可以执行栈式操作;② 3个16位状态和控制寄存器:一个状态字寄存器SWD、一个控制字寄存器CWD和一个特征(TAG)寄存器;③ 4个32位出错指针寄存器(FIP、FCS、FOO和FOS)用于确定导致80387内部异常的指令和内存操作数。 图11-5 80387的寄存器
Linux内核完全剖析——数学协处理器功能和结构
书名: Linux内核完全剖析
作者: 赵炯
出版社: 机械工业出版社
副标题: 基于0.12内核
出版年: 2008.10
页数: 945
定价: 99.00元
装帧: 平装
ISBN: 9787111250470