x86中的寄存器

IA32-通用寄存器

EAX 累加(Accumulator)寄存器 AX(AH、AL) 常用于乘、除法和函数返回值

EBX 基址(Base)寄存器 BX(BH、BL) 常做内存数据的指针

ECX 计数器(Counter)寄存器 CX(CH、CL) 常做字符串和循环操作中的计数器

EDX 数据(Data)寄存器 DX(DH、DL) 常用于乘、除法和 I/O 指针

ESI 来源索引(Source Index)寄存器 SI 常做内存数据指针和源字符串指针

EDI 目的索引(Destination Index)寄存器 DI 常做内存数据指针和目的字符串指针

ESP 堆栈指针(Stack Point)寄存器 SP 只做堆栈的栈顶指针; 不能用于算术运算与数据传送

EBP 基址指针(Base Point)寄存器 BP 只做堆栈指针, 可以访问堆栈内任意地址; 不能用于算术运算与数据传送

 

Intel 指令集

MMX:

1997年Intel公司推出了多媒体扩展指令集MMX(MultiMedia eXtensions),它包括57条多媒体指令。MMX指令主要用于增强CPU对多媒体信息的处理能力,提高CPU处理3D图形、视频和音频信息的能力。在MMX指令集中,借用了浮点处理器的8个寄存器,这样导致了浮点运算速度降低

SSE:

1999年Intel公司在Pentium IIICPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。在SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器。而且SSE指令寄存器可以全速运行,保证了与浮点运算的并行性。

SSE2:

SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。

SSE3:

SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。

SSE4:

SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速

 

MMX 指令集:

拷贝指令
movq:64位数据拷贝,如果内存8位对齐的话,是一个64位写,否则2个32位写。
movd:32位数据拷贝,注意:如果从内存向MMX寄存器拷贝,MMX高32位清零!
 
分组指令:
分组指令是MMX特有的,所以对于它我们要特别的关注。分组指令基本上可以分为2类,一类是不带符号紧缩的,一类是带符号紧缩的。现在我们分别予以介绍:
①punpcklbw / punpcklwd / punpckldq (l表示低位分组,bw8位,wd16位,dq32位):它是简单的将两个MMX寄存器的低32位交错组合为一个64位数据。所以它是不能将长数据转换为短数据的。
②packuswb 将16位数据转换为无符号的8位数据。所以可以将两个MMX寄存器不交错的合为一个64位数据。
③packsswb/packssdw 将32位-》16位,16位-》8位,都是有符号的数据。
 
运算指令:
加法运算指令:paddb(w)(d):没有越界保护的加法,当越界的时候仅仅丢弃超出范围的高位比特,(b)(w)(d)分别为8,16,32位加法;paddsb(w):具有越界保护的有符号加法,当上溢的时候为0x7fff,下溢的时候为0x8000;paddusb(w):具有越界保护的无符号加法,当上溢的时候为0x7fff,下溢的时候为0x0。
减法运算指令同上;add改为sub。
乘法指令:pmullw / pmulhw 是4个16位数据的乘法,pmullw中是结果的低16位,pmulhw是结果的高16位。pmaddwd 乘加指令。

http://dev.gameres.com/Program/Other/MMXDev.htm

 

SSE指令集:

70条指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值