首页
社区
课程
招聘
《C++反汇编》关于浮点寄存器所占字节数
发表于: 2014-7-17 17:09 15307

《C++反汇编》关于浮点寄存器所占字节数

2014-7-17 17:09
15307
P23页倒数第五行原文:“每个浮点寄存器占8个字节

今天翻阅《Intel开发者手册》的时候,看到上面有一句话:The x87 FPU data registers (shown in Figure 8-1) consist of eight 80-bit registers. 也就是占80个bit,即10个字节

这里书中是否有误?还是我理解错了?还请赐教

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
2
我记得有
single float,单精度浮点 4字节
double float,双精度浮点 8字节
long double float,长双精度
long double有时候是10字节,80位的。

x86中浮点寄存器好像也是80位的。

80x87支持三种浮点数据类型:单精度、双精度和扩展精度;它们的长度依次为32、64和80位,即4、8和10个字节;它们遵循美国IEEE(电子电气工程师协会)定义的国际标准浮点格式。

· 单精度浮点数(32位短实数)——由1位符号、8位指数、23位有效数组成。

· 双精度浮点数(64位长实数)——由1位符号、11位指数、52位有效数组成。

· 扩展精度浮点数(80位临时实数)——由1位符号、15位指数、64位有效数组成。很多计算机中并没有80位扩展精度这种数据类型,80x87 FPU主要在内部使用它存贮中间结果,以保证最终数值的精度。



另外:
FPU: 8个80位浮点寄存器(数据),16位状态寄存器,16位控制寄存器,16为标识寄存器。
使用FPU指令对这些寄存器进行操作,这些寄存器构成一个循环栈,st7栈底,st0栈顶,
当一个值被压入时,被存入st0,原来st0中的值被存入st7
MMX: 将8个FPU寄存器重命名为8个64位MMX寄存器,即mm0到mm7。[号称多媒体处理技术]
57条MMX指令,加快了整形浮点运算,但是对于复杂浮点运算无帮助

不知道64位的是不是MMX寄存器。
2014-7-17 18:05
0
雪    币: 305
活跃值: (3393)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
64位浮点数肯定用mmx寄存器,自己调试下就知道。具体占多少位没算过
2014-7-17 20:22
0
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
4
非常感谢,我又看了下《Intel开发者手册》中的MMX部分,好像MMX寄存器也是针对处理整形数据的吧?
2014-7-17 23:15
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
5
这个不清楚了。x86架构我只熟悉通用寄存器
2014-7-17 23:26
0
雪    币: 267
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
我也遇到了这个疑问。
2023-1-29 09:41
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码