- 第一章 CPU 简介
- 第二章 Hello,world!
- 第三章 函数开始和结束
- 第四章 栈
- Chapter 5 printf() 与参数处理
- Chapter 6 scanf()
- CHAPER7 访问传递参数
- Chapter 8 一个或者多个字的返回值
- Chapter 9 指针
- Chapter 10 条件跳转
- 第 11 章 选择结构 switch()/case/default
- 第 12 章 循环结构
- 第 13 章 strlen()
- Chapter 14 Division by 9
- chapter 15 用 FPU 工作
- Chapter 16 数组
- Chapter 17 位域
- 第 18 章 结构体
- 19 章 联合体
- 第二十章 函数指针
- 第 21 章 在 32 位环境中的 64 位值
- 第二十二章 SIMD
- 23 章 64 位化
- 24 章 使用 x64 下的 SIMD 来处理浮点数
- 25 章 温度转换
- 26 章 C99 的限制
- 27 章 内联函数
- 第 28 章 得到不正确反汇编结果
- 第 29 章 花指令
- 第 30 章 16 位 Windows
- 第 31 章 类
- 三十二 ostream
- 34.2.2 MSVC
- 34.2.3 C++ 11 std::forward_list
- 34.3 std::vector
- 34.4 std::map and std::set
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
chapter 15 用 FPU 工作
FPU--是一个主 cpu 被设计用来处理浮点数的设备。
过去它被称为协处理器,放在 CPU 旁边,看起来像可编程的计算器,在学习 FPU 之前学习堆栈机或 forth 语言是值得的。
有趣的是,在过去(80486cpu 之前),协处理器是一个单独的芯片,并不总是安装在母版上,单独购买和安装也是可以的。
但从 80486 DX CPU 开始,FPU 就被安装在里面了。
FWAIT 指令可能提醒我们一个事实--它将 CPU 转换成等待模式,因此它可以一直等待直到 FPU 完成工作。另外一点是 FPU 指令操作码从所谓的 escape 操作码(D8..DF)开始,进入了 FPU。
FPU 有可以容纳 8 个 80 字节的寄存器栈容量,每一个寄存器可以存储一个 IEEE 754 格式的数字。
C/C++语言提供至少两种浮点数类型,float(单精度,32 位),double 类型(双精度,64 位)。
GCC 也支持多精度类型(扩展精度,80 位),但是 MSVC 不支持。
在 32 位环境中,浮点数要求和 int 类型的位数相同,但是数值的表示法完全不同。
数值包括符号位,尾数(也叫做分数)和指数。
参数列表中有 float 和 double 类型的函数通过栈来获得值,如果函数返回 float 或者 double 类型的值,那么返回值将放在 ST(0) 寄存器中--在 FPU 的栈顶。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论