zoukankan      html  css  js  c++  java
  • MMX指令集系列之二

    4. 数据移位指令

       psllw MM,MM/m64

       psllw MM,imm8

       把目的寄存器按字由源存储器(或imm8 立即数)指定位数逻辑左移,移出的位丢失.
       低字移出的位不会移入高字.
       例:
       当MM0 = 0xffff  ffff ffff  ffff, 执行psllw MM0,1
       则MM0 = 0xfffe fffe fffe fffe

      psrlw MM,MM/m64

      psrlw MM,imm8


      把目的寄存器按字由源存储器(或imm8 立即数)指定位数逻辑右移,移出的位丢失.
      高字移出的位不会移入低字.
      例:
      当MM0 = 0xffff  ffff  ffff  ffff, 执行psrlw MM0,1
      则MM0 = 0x7fff 7fff 7fff 7fff

      pslld MM,MM/m64

      pslld MM,MM imm8

      把目的寄存器按双字由源存储器(或imm8 立即数)指定位数逻辑左移,移出的位丢失.
      低双字移出的位不会移入高双字.
      例:
      当MM0 = 0xffffffff  ffffffff, 执行 pslld MM0,1
      则MM0 = 0xfffffffe fffffffe

     psrld MM,MM/m64

     psrld MM,imm8
     

      把目的寄存器按双字由源存储器(或imm8 立即数)指定位数逻辑右移,移出的位丢失.
      高双字移出的位不会移入低双字.
      例:
      当 MM0 = 0xffffffff  ffffffff, 执行psrld MM0,1
      则 MM0 = 0x7fffffff 7fffffff

    5. 乘法指令

        pmullw MM,MM/m64

       并行16位按字相乘, 取结果低16位, 放入目的寄存器的对应字.  

      例:
      当MM0 == 0x0000 0002 0000 acfe

        MM1 ==  0x0000 0009 0000 cef3, 执行 pmullw,

        则MM0 = 0x0000 0000 0012 991a
        2 * 9 = 18,18 = 0000 0012h,取低16位 0012 为结果.
        0x0acfe == -21250,0xcef3 == -12557,-21250*-12557 = 266836250 = 0x 0fe7 991a,取低16位 991a 为结果.

       pmulhw MM,MM/m64
       并行16位按字相乘, 取结果高16位, 放入目的寄存器的对应字.

      例:
      当MM0 == 0x0000 0002 0000 acfe

        MM1 ==  0x0000 0009 0000 cef3, 执行 pmulhw,

        则MM0 = 0x0000 0000 0000 0fe7
        2 * 9 = 18,18 = 0000 0012h,取高16位 0000 为结果.
        0x0acfe == -21250,0xcef3 == -12557,-21250*-12557 = 266836250 = 0x 0fe7 991a,取高16位 0fe7 为结果.

     pmaddwd MM,MM/m64
     按字对齐有符号向量点乘.
     高32位 | 低32位
     目的寄存器:    a0| a1 | a2 | a3
     源寄存器:       b0| b1 | b2 | b3
     目的寄存器结果:  a0*b0+a1*b1 | a2*b2+a3*b3

    小结:

      1. 移位指令按照16位或32位进行并行移位。

      2. 移位指令分为逻辑左移和逻辑右移。

      3. 只有三种乘法指令,并行乘法的数据单位都是16位有符号数。

  • 相关阅读:
    汽车常用的ECU芯片
    Semaphore 和 Mutex
    C语言中结构体 自引用 和 相互引用
    __ARM_PROFILE_M__ __CORE__ __ARMVFP__ __LITTLE_ENDIAN__
    Cortex-M3 Context Switching
    CORTEX -M3 : Registers in depth
    IAR USING PRE- AND POST-BUILD ACTIONS
    IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
    SQLSERVER一些公用DLL的作用解释
    SQLSERVER性能计数器的简单剖析
  • 原文地址:https://www.cnblogs.com/celerychen/p/2982576.html
Copyright © 2011-2022 走看看