曲径通幽论坛

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

MMX 整数

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-12-21 11:53:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MMX (Multimedia Extension),多媒体扩展技术,在奔腾II处理器时开始引进。它提供 3 种新的整数类型:
      64 位打包字节整数
      64 位打包字整数
      64 位打包双字整数
以上每种数据类型都提供把多个整数数据元素包含到(或者说打包到)单一的 64 位 MMX 寄存器中的能力,如下图所示:

如上图所示:8个字节整数,4个字节整数或者2个字节整数都可以打包到单一的64位MMX寄存器中。

MMX 平台提供了对 MMX 寄存器中打包的每个整数值执行并行数学操作的附加指令。

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
沙发
 楼主| 发表于 2009-12-21 20:42:48 | 只看该作者

传送MMX整数

传送 MMX 整数到 MMX 寄存器中使用 MOVQ 指令。但是必须决定当前应用程序将使用 3 种打包整数格式中的哪一种。MOVQ 指令格式如下:
movq source, destination
其中,source 和 destination 可以是 MMX 寄存器,SSE 寄存器或者 64 位的内存位置 (但是不能在两者都是内存的情况下传送 MMX 整数)。

测试程序
.section .data
values1:
    .int 1, -1
values2:
    .byte 0x10, 0x05, 0xff, 0x32, 0x47, 0xe4, 0x00, 0x01

.section .text
.global _start
_start:
    nop
    movq values1, %mm0
    movq values2, %mm1
    movl $1, %eax
    movl $0, %ebx
    int $0x80
进入 GDB 调试,观察 MM0 和 MM1 寄存器,其输出为:
(gdb) print $mm0
$1 = {uint64 = -4294967295, v2_int32 = {1, -1}, v4_int16 = {1, 0, -1, -1},
  v8_int8 = {1, 0, 0, 0, -1, -1, -1, -1}}
(gdb) print $mm1
$2 = {uint64 = 72308588487312656, v2_int32 = {855573776, 16835655},
  v4_int16 = {1296, 13055, -7097, 256}, v8_int8 = {16, 5, -1, 50, 71, -28, 0,
    1}}
(gdb) print/x $mm1
$3 = {uint64 = 0x100e44732ff0510, v2_int32 = {0x32ff0510, 0x100e447},
  v4_int16 = {0x510, 0x32ff, 0xe447, 0x100}, v8_int8 = {0x10, 0x5, 0xff, 0x32,
    0x47, 0xe4, 0x0, 0x1}}
(gdb) print/x $mm0
$4 = {uint64 = 0xffffffff00000001, v2_int32 = {0x1, 0xffffffff}, v4_int16 = {
    0x1, 0x0, 0xffff, 0xffff}, v8_int8 = {0x1, 0x0, 0x0, 0x0, 0xff, 0xff,
    0xff, 0xff}}
上面,uint64 表示把 64 位当成一个整体来显示;v2_int32 表示以 2 个 32 位数来显示;v4_int16 表示以 4 个 16 位数来显示;v8_int8 表示以 8 个 8 位数(字节) 来显示。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-4 01:45 , Processed in 0.084451 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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