IA-32平台的数值处理与基本数学函数
1. 数据类型调试与SSE3指令
在调试过程中,有时需要筛选调试器输出以查找特定数据类型。例如,要查找 v2_double 数据类型,需确保正确的值已移动到寄存器,还需检查数据内存位置,以确认正确的值也已复制到该位置。以下是检查数据内存位置的示例:
(gdb) x/2gf &data
0x80490c0 <data>: 12.34 2345.5430000000001
(gdb)
由于数据内存位置包含两个双精度浮点值,因此必须使用 x 命令的 2gf 选项来显示存储在该内存位置的两个值。
SSE3技术(适用于奔腾4及后续处理器)增加了三条额外的指令,用于处理打包双精度浮点值的移动:
- MOVSHDUP :从内存或XMM寄存器移动一个128位值,复制第二个和第四个32位数据元素。例如,移动由32位单精度浮点值 DCBA 组成的数据元素,将创建由 DDBB 组成的128位打包单精度浮点值。
- MOVSLDUP :从内存或XMM寄存器移动一个128位值,复制第一个和第三个32位数据元素。例如,移动由32位单精度浮点值 DCBA 组成的数据元素,将创建由 CCAA 组成的128位打包单精度浮点值。
超级会员免费看
订阅专栏 解锁全文
967

被折叠的 条评论
为什么被折叠?



