首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在x86程序集中添加0xFFFFFFFFF

问在x86程序集中添加0xFFFFFFFFF
EN

Stack Overflow用户
提问于 2012-07-10 02:08:24
回答 1查看 1.2K关注 0票数 5

我目前正在反向反汇编,偶然发现了一系列我不理解的指令:

给定esi中的对象指针。

代码语言:javascript
复制
.text:00C20263                 cmp     dword ptr [esi+80h], 0
.text:00C2026A                 jnz     short loc_C2027D

正如您所看到的,如果成员+0x80不是0(成员是一个整数),代码将跳转到00C2027D

代码语言:javascript
复制
.text:00C2027D                 add     dword ptr [esi+80h], 0FFFFFFFFh
.text:00C20284                 jnz     short loc_C20291

这两个指令是我不太理解的。首先,该成员递增0xFFFFFFFFF;但是由于该成员不是0,这不会超过32位整数的最大值吗?jnz指令什么时候跳转?

可以指出这两个指令的目的是什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-10 02:12:50

对于有符号变量,0FFFFFFFFh与-1相同,所以这是从值中减去1,并检查它是否为零。编译器通常会发出“相加负值”而不是sub指令,这可能是因为它允许重用编译器逻辑进行加法和减法。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11400624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档