admin 发表于 2024-4-12 21:36:17

PSLLW/PSLLD/PSLLQ/PSLLDQ PSRLW/PSRLD/PSRLQ/PSRLDQ 字节位移指令





PSLLW/PSLLD/PSLLQ/PSLLDQ   算术字节左移 //移动N*8位 空出来的位用0填充
PSRLW/PSRLD/PSRLQ/PSRLDQ算术字节右移 //移动N*8位 空出来的位用0填充


PSLLW字操作 //16位WORD

PSLLD   双字操作//32位 DWORD

PSLLQ   4字操作 //64位 QWORD

PSLLDQ 8字操作//128位 XMMWORD




    郁金香灬游戏外挂技术
        官方网址 www.yjxsoft.com
       
        本教程视频1920*1080分辩率下观看最佳
        VS2017+win10 64位 环境
        郁金香灬老师:QQ 3003975536 备用QQ 150330575 391990139
        欢迎大家一起研究游戏安全与游戏外挂方面知识。
                  
        兴趣+时间+优秀老师会帮助你快速成功
   
    知识点:
       
        64位整数转浮点
        双浮点数转整数

#include<intrin.h>
#include <emmintrin.h>
       
SSE/SSE2/SSE3 //Intel扩展指令有几十条
//整数   转浮点数

//浮点数 转整数
CVTSS2SI – 取出一个32位的浮点值,并取整(四舍五入)为一个64位的整型。内部指令:_mm_cvtss_si64
CVTTSS2SI – 取出一个32位的浮点值,并截断为一个64位的整型。内部指令:_mm_cvttss_si64


//浮点数 转整数
CVTSD2SI – 取出最低位的64位浮点值,并取整为一个整型。内部指令: _mm_cvtsd_si64
CVTTSD2SI – 取出一个64位的浮点值,并截断为一个64位的整型。内部指令:_mm_cvttsd_si64
//整数   转浮点数
CVTSI2SD – 取出最低位的64位整型,并将其转换为一个浮点值。内部指令:_mm_cvtsi64_sd
CVTSI2SS – 把一个64位的有符号整型转换为一个浮点值,并把它插入到一个128位的参数中。内部指令:_mm_cvtsi64_ss


   cvttss2si eax, dword ptr ss:   //float 转 int
   cvtsi2ss xmm0, dword ptr ss:   //int 转 float       xmm0= cvtsi2ss把123转换浮点数123.0f
   cvtss2sd xmm0, dword ptr ss:   //float 转 double
   
    COMISD 双精度浮点数 EFLAGS

cvttsd2si rcx,xmm0   // double 转 UINT64 // 456.0f转换成 UIN64 456    rcx=转整数64(xmm0)
cvtsi2sd xmm0,rax    // UIN64 转 double
cvtsi2sd xmm0,ecx    // UIN32 转 double

cvttsd2si eax, xmm0 //double 转 UINT32   //x86下一般使用 __dtoul3 <double 转 UINT32 >

//算术右移N个字节 //右移N*8个位
psrldq xmm1, 0x4 //128位的 右移 字节数   //右移了4字节 右移了32位

psllq xmm1, 0x1 //算术左移1字节
psrlq xmm1, 0x1 //算法右移1字节

PSLLW/PSLLD/PSLLQ/PSLLDQ算术字节左移 //移动N*8位 空出来的位用0填充
PSRLW/PSRLD/PSRLQ/PSRLDQ算术字节右移 //移动N*8位 空出来的位用0填充

//x64环境指令
#include<intrin.h>
#include <emmintrin.h>

int testx64()
{
        __m128d a;

        a.m128d_f64 = 200.5;
        __int64 res = _mm_cvtsd_si64(a);
        printf_s("Original a: %I64f\n", a.m128d_f64);
        printf_s("Result res: %I64d\n", res);

        return 0;
}


       
       
          
   郁金香老师:QQ 3003975536
   备用   QQ 150330575   
   备用   QQ 391990139

   手机   139 9636 2600
   微信   139 9636 2600
   支付宝   139 9636 2600
   
   官方网址www.yjxsoft.com
   QQ交流群298179799569245    158280115
   
   
   
   
   

yjxqq3003 发表于 2024-4-12 21:40:39

PSLLW1字操作 //16位 WORD      PSLLW XMM0,3//XMM0的低16位 左移3个字节 28位
PSLLD2字操作 //32位 DWORD
PSLLQ4字操作 //64位 QWORD
PSLLDQ 8字操作//128位 XMMWORD   pslldq xmm0,4 //XMM0的低16位 左移4个字节 32位
页: [1]
查看完整版本: PSLLW/PSLLD/PSLLQ/PSLLDQ PSRLW/PSRLD/PSRLQ/PSRLDQ 字节位移指令