在最近的一个作业中,我反汇编了一个用 C++ 编写的二进制文件。
在整个程序的几个地方,我遇到了如下所示的零位移位操作(确切的代码/IDA 目前不在我面前)。移位操作都在条件分支之前。
...
call sub_123456
add esp, 8
shr eax, 0
cmp ...
jz ...
我对汇编有很好的理解,但我不明白你为什么要做零位偏移。这本质上不是NOP吗?我一直在寻找这方面的信息,但还没有找到任何明确的信息。我的猜测是编译器出于某种原因添加了它,但我想了解原因。作业已经提交;这只是一个一直困扰着我的问题。任何输入将不胜感激!
谢谢