基于MMX指令集的程序设计
MMX技术简介
为了满足多媒体技术(包括图形图像,声频,动画,视频等)对大量数据快速处理的需要,intel公司在其第5代intel80x86微处理器奔腾中,加入了多媒体扩展指令,数据流SIMD扩展SSE指令和SSE2指令。
Intel 公司的MMX(多媒体增强指令集)技术可以大大提高应用程序对二维三维图形和图象的处理能力。Intel MMX技术可用于对大量数据和复杂数组进行的复杂处理,使用MMX技术可处理的数据基本单位可以是字节(byte)、字(word),或者是双字(double-word)。
图1 MMX的指令寄存器
1. MMX的数据处理特点
一条MMX指令可以同时计算 8/4/2 个数据
紧缩字节:8个8位字节被紧缩成一个64位数据
紧缩字:4个16位字被紧缩成一个64位数据
紧缩双字:2个32位双字被紧缩成1个64位数据
紧缩4字:1个64位数据
2.MMX的指令集
算术运算指令:
PADD[B,W,D]环绕加【字节,字,双字】
PSUB[B,W,D]环绕减【字节,字,双字】
环绕运算是指:无符号数据的运算结果超出其数据类型界限的时候,它进行正常的进位借位运算。但是MMX技术没有新增任何标志,MMX指令也不影响状态标志,所以每个进位或错位并不能反映出来。例如:
16位字的数据类型界限是0000~FFFFH,则环绕运算
7FFEH+0003H=8001H(无进位)
0003H+FFFEH=0001H(有进位)
7FFEH-0003H=7FFBH(无借位)
0003H-FFFEH=0005H(有借位)
PADDS[B,W]有符号饱和加【字节,字】