深入理解SSE、SSE2和SSE3指令集及其应用
1. SSE指令集概述
SSE(Streaming SIMD Extensions)架构为打包单精度浮点值提供了SIMD(Single Instruction Multiple Data)支持。与MMX架构类似,SSE提供了将数据移动到XMM寄存器、对SSE数据进行数学运算以及从XMM寄存器检索数据的新指令。
SSE指令与MMX的一个区别在于,每个SSE指令有两个版本:
- PS后缀版本 :对打包的单精度浮点值执行算术运算,就像MMX操作一样,打包数据值中的每个值都会经过该运算,结果打包值包含每个打包值运算的结果。
- SS后缀版本 :对标量单精度浮点值执行算术运算,只对打包值中的低双字进行运算,源操作数中的其余三个值会直接复制到结果中。
2. 移动数据
移动单精度浮点值高度依赖于这些值在内存中是否对齐。以下是一些常用的数据移动指令:
| 指令 | 描述 |
| ---- | ---- |
| MOVAPS | 将四个对齐的单精度值移动到XMM寄存器或内存 |
| MOVUPS | 将四个未对齐的单精度值移动到XMM寄存器或内存 |
| MOVSS | 将一个单精度值移动到内存或寄存器的低双字 |
| MOVLPS | 将两个单精度值移动到内存或寄存器的低四字 |
| MOVHPS | 将两个单精度值移动到内存或寄存器的高四字 |
| MOVLHPS | 将两个单精度值从低四字移动到高四字 |
| MOVHLPS | 将两个
超级会员免费看
订阅专栏 解锁全文
398

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



