14.x86游戏实战-汇编指令cmp test

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:13.x86游戏实战-汇编指令neg shr shl sar

test、cmp一般用来作比较

test它与and的功能一样,也就是一个与运算,但是它不会改变操作数(test eax, 2,这里的eax位置就是操作数)的内容,test会改变eflags寄存器的内容

cmp与sub的功能一样,也就是一个减运算,它也不会改变操作数的内容(不会把结果放到操作数里),它也只会改变eflags寄存器的内容

eflags寄存器

它是标志寄存器,理论上它里面每一位都代表了一个东西(为什么说理论上,因为eflags寄存器有一些位目前是没有任何意义没有任何用的),如下图efalgs寄存器用到的每一位所代表的东西,记不住没关系,后面用到了会有非常详细保姆级的说明,现在完全不需要记不需要理解,现在只要知道有这么回事就行

跳转指令:跳不跳转取决于eflags寄存器里的值

JE   ;等于则跳转
JNE  ;不等于则跳转

JZ   ;为 0 则跳转
JNZ  ;不为 0 则跳转

JS   ;为负则跳转
JNS  ;不为负则跳转

JC   ;进位则跳转
JNC  ;不进位则跳转

JO   ;溢出则跳转
JNO  ;不溢出则跳转

JA   ;无符号大于则跳转
JNA  ;无符号不大于则跳转
JAE  ;无符号大于等于则跳转
JNAE ;无符号不大于等于则跳转

JG   ;有符号大于则跳转
JNG  ;有符号不大于则跳转
JGE  ;有符号大于等于则跳转
JNGE ;有符号不大于等于则跳转

JB   ;无符号小于则跳转
JNB  ;无符号不小于则跳转
JBE  ;无符号小于等于则跳转
JNBE ;无符号不小于等于则跳转

JL   ;有符号小于则跳转
JNL  ;有符号不小于则跳转
JLE  ;有符号小于等于则跳转
JNLE ;有符号不小于等于则跳转

JP   ;奇偶位置位则跳转
JNP  ;奇偶位清除则跳转
JPE  ;奇偶位相等则跳转
JPO  ;奇偶位不等则跳转

test指令

一般与跳转指令一起使用,就是用来做判断,如果比如1大于2就跳转到某某函数、某某地址,test会改变eflags寄存器的值,这并没有什么用,有用的是跳转指令,跳转指令会根据eflags寄存器的值来决定跳不跳转

test指令一般会如下图中的例子来使用,一般跟在调用完函数的下一句,用来判断函数返回值是不是0,如果是0一般说明返回值有问题(具体要根据实际情况分析,后面遇到了会详细写),然后如下图eax的值是1,然后test是一个与操作,所以eflags寄存器不会是0,所以jnz会跳转

执行结果

不跳转的例子,也就是与完的结果是0

cmp

上方说test一般用来判断返回值是否存在(返回值是否是0),cmp就是用来做大小比较的,如下图eax的值是0,ecx的值是2,eax比ecx小

然后执行jle指令就会跳转,所以至于是做大于判断还是小于判断,取决于cmp后面跟着的是什么跳转指令


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/788072.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

移除元素的讲解,看这篇就够了!

一:题目 博主本文将用指向来形象的表示下标位的移动。 二:思路 1:两个整形,一个start,一个end,在一开始都 0,即这里都指向第一个元素。 2:在查到val之前,查一个&…

策略路由和路由策略的区别详解

先说策略路由也就是 PBR: 它不会影响路由表的生成,设备的路由表是已经存在而且稳定的。 举个例子: 用 TCP/IP 路由技术一书的表述就是:策略路由就是一个复杂的静态路由。 总结:策略路由是一个基于路由表的影响特定数…

Linux | 安装lb-toolkits 1.2.4库

Linux | 安装 lb-toolkits 最近又需要下载葵花的数据,之前分享过一次代码。今天发现之前的环境不小心被我删了,而运行相关的代码需要安装lb-toolkits这个库,今天正好记录了一下安装lb-toolkits的过程。 这里安装的版本是1.2.4,别…

兼容性报错--调整字符集解决

文章目录 错误解决办法Unicode 字符集(两个字节来表示一个字符)多字节字符集(一个字节来表示一个字符)如何选择字符集char与wchar_t的区别LPCSTR与LPCWSTR的区别 错误 解决办法 切换字符集类型 Unicode 字符集(两个字节来表示一个字符) 优点: 支持更多的字符集…

高效前端开发:解密pnpm的存储与链接

什么是pnpm PNPM(Performant NPM)是一种快速且节省磁盘空间的包管理工具。相较于其他包管理器如NPM和Yarn,PNPM通过独特的存储机制和链接技术解决了许多常见的问题。以下是PNPM如何避免这些问题以及其关键技术的详细介绍。 特性 PNPM Store…

6.Python学习:异常和日志

1.异常的抓取 1.1异常的概念 使用异常前: print(1/0)使用异常后:错误提示更加友好,不影响程序继续往下运行 try:print(10/0) except ZeroDivisionError:print("0不能作为分母")1.2异常的抓取 第一种:如果提前知道可…

[C++] 由C语言过渡到C++的敲门砖

命名空间 在C/C中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染 。 在同一个工程中…

可视采耳仪器什么牌子好?年度必备五大可视耳勺品牌分享

无线可视挖耳勺作为近年来新兴的个护健康产品,受到了越来越多消费者的关注和喜爱。这种挖耳勺采用了先进的无线技术和高清摄像头,能够让人们更加清晰地观察自己耳内的状况,从而更加安全、有效地清洁耳朵。 但随着可视挖耳勺市场扩大&#xff…

老师怎样提高学生的听课效率?

在课堂上,我们常常面临一个问题:如何提高学生的听课效率?这是一个让无数教师头疼的问题。学生是否全神贯注,是否能够吸收和理解课堂上的知识,这直接关系到教学的成败。那么,作为教师,我们能做些…

可以添加todo清单桌面小组件的便签哪个好?

在我们快节奏的生活中,有效的时间管理和任务追踪是必不可少的。为了实现这一目标,许多人选择使用桌面便签,尤其是那些具有Todo清单桌面小组件的便签。但是,面对市场上众多选择,可以添加todo清单桌面小组件的便签哪个好…

STM32的SPI接口详解

目录 1.SPI简介 2.SPI工作原理 3.SPI时序 3.1 CPOL(Clock Polarity,时钟极性): 3.2 CPHA(Clock Phase,时钟相位): 3.3 四种工作模式 4.相关代码 4.1使能片选信号 4.2使能通…

vue学习day01-vue的概念、创建Vue实例、插值表达式、响应式、安装Vue开发者工具

1、vue的概念 Vue是一个用于构建用户界面的渐进式 框架 (1)构建用户界面:基于数据动态渲染页面 (2)渐进式:循序渐进的学习 (3)框架:一条完整的项目解决方案&#xff…

回溯算法-以医院信息管理系统为例

1.回溯算法介绍 1.来源 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。 用回溯算法解决问题的一般步骤: 1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。 2 、确定易于搜…

Redis代替Session实现共享

集群的session共享问题 session共享问题:多台tomcat并不共享session存储空间,当请求切换到不同的tomcat服务时导致数据丢失的问题。 session的替代方案: 数据共享内存存储key、value结构 将redis替换session可以解决session共享问题

一文学会 BootStrap

文章目录 认识BootStrap历史优缺点使用注意安装CDN源码引入包管理器 媒体查询屏幕尺寸的分割点(Breakpoints)响应式容器网格系统基本使用底层实现.container.row.col、.col-份数 网格嵌套自动布局列 Auto-layout响应式类 Responsive Class 响应式工具类-…

在 PostgreSQL 里如何处理数据的版本跟踪和回滚?

文章目录 一、事务二、保存点三、使用版本控制扩展四、审计表和触发器五、使用时间戳列六、比较和还原数据七、考虑数据备份和恢复八、结论 在数据库管理中,数据的版本跟踪和回滚是非常重要的功能,有助于在数据操作出现错误或需要回滚到特定状态时进行有…

dbeaver连接postgresql报错��������: �û� “root“ Password ��֤ʧ��

文章目录 问题描述解决办法 问题描述 新安装完成的postgresql通过dbeaver连接访问报错��������: �� “root” Password ��֤ʧ&#…

纷享销客荣获CDIE“2024优秀数字化技术服务商”

近日,在第十届数字化创新博览会(CDIE 2024)上,CRM品牌领导者纷享销客凭借其卓越的技术实力和创新的解决方案,荣获“2024 优秀数字化技术服务商”奖项。 作为国内领先的CRM数字化解决方案服务商,纷享销客一直…

如何构建数据驱动的企业?爬虫管理平台是关键桥梁吗?

一、数据驱动时代:为何选择爬虫管理平台? 在信息爆炸的今天,数据驱动已成为企业发展的核心战略之一。爬虫管理平台,作为数据采集的第一站,它的重要性不言而喻。这类平台通过自动化手段,从互联网的各个角落…

static的理论学习

在说到static之前,需要先明确变量类型: 而在聊到变量类型之前我们可以将变量的两个属性好好学一学 变量的两个属性 作用域(scope): 从内存的角度来看,就是变量存放在栈(stack)中&…