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条指令

  • 数据传输:Data movement instructions
  • 算术运算:Arithmetic instructions
  • 倒数运算:Reciprocal instructions
  • 比较运算:Comparison instructions
  • 数据转换:Conversion instructions
  • 逻辑运算:Logical instructions
  • 整数运算:Additional SIMD integer instructions (SSE Primer)
  • 字节乱排:Shuffle instructions
  • 状态管理:State Management instructions
  • 缓存控制:Cacheability Control instructions

     

     

    http://tommesani.com/index.php/component/content/article/2-simd/35-sse-primer.html

     

  • 你可能感兴趣的:(x86中的寄存器)