首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

x87 FPU简史

x87 FPU简史

第2部分 应用x87 FPU编程与VC6浮点库
第8章 x87 FPU编程
前面几章都是讲述计算原理,在CPU支持的基本整型的基础建立了几个类型模板,支持通用的(即没有长度或精度限制的)整型计算、定点数计算、浮点数计算、基本函数计算,实际上是实现了一个C++浮点仿真库。这些内容虽然对理解计算原理非常重要,但除了CGUINT可能在密码领域有点价值之外,其他的几个模板的实际应用价值均不大。
目前,支持IEEE标准的浮点硬件已经普及。通用CPU均已内置了浮点单元,最大可支持IEEE的扩展双精度格式,足以满足一般计算的需要。特殊环境下的开发(例如嵌入式系统)即使没有浮点硬件,编译器也可能提供了仿真库。毕竟,浮点运算已经是C/C++不可或缺的一部分。而且,在编译器中实现一两种浮点类型,技术难度和工作量并不大(本书的代码就是一个证明),FORTRAN早在几十年前就是这么做的。因此,在实际的开发工作中,重要的不是自己实现已经实现的东西,而且如何更好地控制浮点硬件,从而得到更稳定、更高效的代码。
自然,正如CPU一样,每一个浮点硬件系统都是不一样的,且不提运算过程的处理细节,即使是编程模型、指令集也会有很大的区别,讲述所有的浮点硬件是不现实的。不过,它们一般都遵循IEEE标准,这意味着在逻辑层面,它们是大同小异的,讲述所有的浮点硬件也是没有必要的。
x86 CPU是目前CPU的主流,它内置的浮点处理单元x87 FPU是最常用的浮点硬件。本章就以x87 FPU为例讲述浮点硬件编程,后面几章讲述反汇编分析建立在x87 FPU之上的VC6浮点库,从而使读者得到计算编程系统的完整印象。
本章内容主要来自文献[2],加上了自己的理解。有兴趣的读者可以继续阅读文献[2]以获得更准确、全面的理解。
8.1  x87 FPU简史
早在16位的8086年代,8087就作为8086的数学协处理器出现。当时的8087是一个与8086分离的芯片,它使用的浮点指令是专用的浮点指令,但浮点指令与其他8086指令混合在一起执行。后来,在80486中,x87 FPU出现了,取代了原先的协处理器,这是x87 FPU在IA-32体系中的首次出现。
x87 FPU延续了协处理器的浮点指令集。
继承事业,薪火相传
返回列表