请选择 进入手机版 | 继续访问电脑版

郁金香灬老师 游戏安全  驱动 逆向调试 C/C++编程  脚本 UE4/UE5

找回密码
立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
发新帖
课程大纲和价格
官方联系方式2024在线课大纲QQ咨询

34万

积分

127

好友

136

主题
发表于 2024-4-12 21:36:17 | 查看: 1098| 回复: 1




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:[ebp-0x4]   //float 转 int
   cvtsi2ss xmm0, dword ptr ss:[ebp-0x8]   //int 转 float       xmm0= cvtsi2ss把123转换浮点数123.0f  
   cvtss2sd xmm0, dword ptr ss:[ebp-0xC]   //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[0] = 200.5;
        __int64 res = _mm_cvtsd_si64(a);
        printf_s("Original a: %I64f\n", a.m128d_f64[0]);
        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交流群  29817979  9569245    158280115
   
   
   
   
   

游戏安全课程 学员办理咨询联系QQ150330575 手机 139 9636 2600  免费课程 在 www.bilibili.com 搜 郁金香灬老师
发表于 2024-4-12 21:40:39
PSLLW  1字操作 //16位 WORD      PSLLW XMM0,3  //XMM0的低16位 左移3个字节 28位
PSLLD  2字操作 //32位 DWORD
PSLLQ  4字操作 //64位 QWORD
PSLLDQ 8字操作//128位 XMMWORD   pslldq xmm0,4 //XMM0的低16位 左移4个字节 32位

回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ咨询

QQ|Archiver|手机版|小黑屋|郁金香游戏技术

GMT+8, 2024-6-16 22:45 , Processed in 0.130575 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表