MMX指令

原创 2007年10月09日 11:16:00

最近学习相关的多媒体数据操作指令, 统计了一下的MMX指令,作为知识积累。

MMX的数据结构

多媒体软件具有如下显著的特点:
1、 小整型数据类型(图形数据为8位 ,声频数据为16位)
2、 对小整型数据的频繁且重复的计算操作(例如被频繁的调用的核心算法);
3、 许多操作具有内存的并行性(例如对大量的数据进行同一个加,减或乘法运算操作);

MMX技术设计了一套基本的,通用的紧缩整形指令,共57条。

所谓“紧缩整形数据”是指多个8/16/32位的整形数据组合成为一个64位的数据.MMX指令主要就是使用
这种紧缩整形数据,它又分成4种整形类型:紧缩字节、紧缩字、紧缩双字、紧缩4字

。紧缩字节(Packed Byte): 8个字节组合成一个64位的数据;
。紧缩字 (Packed Word): 4个字组合成一个64位的数据;
。紧缩双字(Packed Doubleword): 2个双字组合成一个64位的数据;
。紧缩4字 (Packed Quadword):一个64位数据

这样一条MMX指令就能够同时处理8/4/2个数据单元,这就是所谓的“单指令多数据SIMD”结构。这种结构
是MMX技术把机器性能提高的最根本因素。

为了方便使用64位紧缩整形数据,MMX技术含有8个64位的MMX寄存器(MM0-----MM7),只有MMX指令可以使用MMX寄存器。


值得一提的是,MMX寄存器是随机存取的,但实际上是借用了8个浮点数据寄存器实现的。浮点处理单元FPU有8个浮点寄存器FPR,以堆栈方式存取。每个浮点数据寄存器有80位,高16位用于指数和符号,低64位用于有效数字。MMX利用其64位有效数字部分用做随机存取的64位的MMX寄存器。


MMX指令集

1、算术运算:
PADD[B、W、D] 环绕加[字节,字,双字]
PADDS[B , W] 有符号饱和加[字节,字]
PADDUS[B , W] 无符号饱和加[字节,字]
PSUB[B、W、D] 环绕减[字节,字,双字]
PSUBS[B,W] 有符号饱和减[字节,字]
PSUBUS[D,W] 无符号饱和减【字节,字】
PMULHW 紧缩字乘后取高位
PMULLW 紧缩字乘后取低位
PMADDWD 紧缩字乘,积相加

2、比较:
PCMPEQ[B,W,D] 紧缩比较是否相等【字节,字,双字】
PCMPGT[B,W,D] 紧缩比较是否大于【字节,字,双字】

3、类型转换:
PACKUSWB 按无符号饱和压缩【字成字节】
PACKSS[WB,DW] 按有符号饱和压缩【字/双字成/字节/字】
PUNPCKH[BW,WD,DQ] 扩展高位【字节,字,双字成字,双字,4字】
PUNPCKL[BW,WD,DQ] 扩展地位【字节,字,双字成字,双字,4字】

4、逻辑运算:
PAND 紧缩逻辑与
PANDN 紧缩逻辑与非
POR 紧缩逻辑或
PXOR 紧缩逻辑异或

5、位移:
PSLL[W,D,Q] 紧缩逻辑左移[字,双字,4字]
PSRL[W,D,Q] 紧缩逻辑右移[字,双字,4字]
PSRA[W,D] 紧缩算术右移【字,双字】

7、数据传送:
MOV[D,Q] 从MMX寄存器传人/传出【双字/4字】

8、状态清除
EMMS 清除MMX状态
 
 
 
 

使用MMX/SSE汇编指令集优化视频开发

1、汇编指令集 目前大部分的PC机采用的都是Intel或者AMD的CPU,其支持的多媒体汇编指令有: MMX:多媒体扩展指令(MultiMedia eXtention),该指令由Intel在1996年...
  • shaqoneal
  • shaqoneal
  • 2015年05月26日 17:16
  • 2371

MMX指令集(详解)

EMMS MMX状态置空:将FP特征字置空(全1),使后续浮点指令可以使用浮点寄存器,其他MMX指令自动置FP为全0.本指令应在所...
  • dahan_wangtao
  • dahan_wangtao
  • 2007年12月17日 20:01
  • 9796

SIMD——MMX指令集介绍

MMX指令集共47个指令,分为以下几类: • Data transfer • Arithmetic • Comparison • Conversion • Unpacking • Logi...
  • yangjianqiao0
  • yangjianqiao0
  • 2017年04月07日 11:31
  • 378

使用MMX/SSE汇编指令集优化视频开发

1、汇编指令集 目前大部分的PC机采用的都是Intel或者AMD的CPU,其支持的多媒体汇编指令有: MMX:多媒体扩展指令(MultiMedia eXtention),该指令由Intel在1996年...
  • shaqoneal
  • shaqoneal
  • 2015年05月26日 17:16
  • 2371

MMX汇编指令优化

MMX汇编指令优化
  • jacke121
  • jacke121
  • 2017年01月22日 14:45
  • 345

SIMD——MMX指令集介绍

MMX指令集共47个指令,分为以下几类: • Data transfer • Arithmetic • Comparison • Conversion • Unpacking • Logi...
  • yangjianqiao0
  • yangjianqiao0
  • 2017年04月07日 11:31
  • 378

fpu,mmx以及sse寄存器的少量简介

FPU: 8个80位浮点寄存器(数据),16位状态寄存器,16位控制寄存器,16为标识寄存器。      使用FPU指令对这些寄存器进行操作,这些寄存器构成一个循环栈,st7栈底,st0栈顶,  ...
  • analogous_love
  • analogous_love
  • 2013年06月15日 23:31
  • 1684

在C/C++代码中使用SSE等指令集的指令(1)介绍

在学习微机原理时,老师建议我们去了解一下sse,然后就百度一下,看到一位博主写的关于sse的一系列文章,感觉对于我这种打算浅层了解一下sse的人来说很不错,就转过来了    原文博主的博客链接:ht...
  • ZouCharming
  • ZouCharming
  • 2015年11月10日 22:06
  • 594

MMX Intrinsics各函数介绍

MMX Intrinsics各函数介绍。
  • fengbingchun
  • fengbingchun
  • 2014年03月01日 18:48
  • 4512

SSE指令指令集进行程序加速、DCT的优化处理

1. 什么是SSE 说到SSE,首先要弄清楚的一个概念是SIMD(单指令多数据流,Single Instruction Multiple Data),是一种数据并行技术,能够在一条指令中同时对多个...
  • yangdashi888
  • yangdashi888
  • 2016年11月28日 13:43
  • 1522
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MMX指令
举报原因:
原因补充:

(最多只允许输入30个字)