曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 11053|回复: 0
打印 上一主题 下一主题

SSE整数(MOVDQA 和 MOVDQU 指令)

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-12-23 21:47:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SSE 是流化 SIMD 扩展的简称( Streaming SIMD Extension, SSE)。SSE 用于处理打包数据的 8 个 128 位 XMM 寄存器 (名为XMM0到XMM7)。SSE2 (Pentium 4 中引入)技术提供 4 种额外的打包带符号整数数据类型:
      128 位打包字节整数
      128 位打包字整数
      128 位打包双字整数
      128 位打包四字整数
SSE 平台提供附加的指令,用于对 SSE 寄存器中的打包数据值执行并行的数学操作。这使处理器可以使用相同的时钟周期处理多得多的信息。

传送 SSE 整数

MOVDQAMOVDQU 指令用于把 128 位数据传送到 XMM 寄存器中,或者在 XMM 寄存器之间传送数据。助记符的 A 和 U 分别代表对准和不对准,它们表示数据是如何存储在内存中的。如果对准 16 个字节边界的数据,就使用 A 选项;否则,就使用 U 选项。

MOVDQA 和 MOVDQU 的指令格式如下:
movdqa source, destination
其中 source 和 destination 可以是 SSE 128 位寄存器或者 128 位的内存位置 (注意: 不能在两个内存位置之间传送数据)。当使用对准的数据时,SSE 指令执行得更快。另外,如果程序对未对准的数据使用 MOVDQA 指令,就会造成硬件异常。

下面程序演示把 128 位数据传送到 SSE 寄存器中:
.section .data
values1:
    .int 1, -1, 0, 135246
values2:
    .quad 1, -1

.section .text
.global _start
_start:
    nop
    movdqu values1, %xmm0
    movdqu values2, %xmm1

    movl $1, %eax
    movl $0, %ebx
    int $0x80
在 GDB 中观察 xmm0 和 xmm1 寄存器:
(gdb) print $xmm0
$1 = {v4_float = {1.40129846e-45, -nan(0x7fffff), 0, 1.89520012e-40},
  v2_double = {-nan(0xfffff00000001), 2.8699144274488922e-309}, v16_int8 = {1,
    0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 78, 16, 2, 0}, v8_int16 = {1, 0, -1,
    -1, 0, 0, 4174, 2}, v4_int32 = {1, -1, 0, 135246}, v2_int64 = {
    -4294967295, 580877146914816},
  uint128 = 0x0002104e00000000ffffffff00000001}
(gdb) print $xmm1
$2 = {v4_float = {1.40129846e-45, 0, -nan(0x7fffff), -nan(0x7fffff)},
  v2_double = {4.9406564584124654e-324, -nan(0xfffffffffffff)}, v16_int8 = {1,
    0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1}, v8_int16 = {1, 0, 0,
    0, -1, -1, -1, -1}, v4_int32 = {1, 0, -1, -1}, v2_int64 = {1, -1},
  uint128 = 0xffffffffffffffff0000000000000001}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 01:32 , Processed in 0.082611 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表