关于以下操作代码参考:http://ref.x86asm.net/coder32.html
我试着多了解一些关于条件跳跃的内容。您将在上面引用的链接中看到,“跳短如果为零/等于(ZF=0)”的操作码是74。因此,如果我们(在调试器中)二进制插入字节74 04,并将ZF标志设置为0,我们将看到4字节的短期前跳:
0207FF9F 74 04 JE SHORT 0207FFA5那里没问题。
稍后在同一引用中,将使用操作码85引用一个类似的条件短跳,但是,如果您弹出该代码的条件跳转的字节长度类似,则会得到以下内容:
0207FFA5 850441 TEST DWORD PTR DS:[ECX+EAX*2],EAX

我很明显不明白,有人能解释一下吗?条件短距离跳转是否基于仅限于操作码70通过7F的标志值?
发布于 2016-10-28 05:25:43
您找到的第二个85位于2字节操作码表中,其中每个条目都以0F作为前缀。
“近”(rel32) 0F 85。(哎呀,HTMLExtract会截断编码列表,只得到几个0F .. rel32版本。或者实际上已经破坏了其余的非表格式。见英特尔的PDF原件。
这些操作码表不是指令集参考手册。不过,如果你需要一个快速的参考资料,它们是很方便的。如果您曾经感到困惑,请在完整的手册中查找说明( x86标记wiki中的链接)。
https://stackoverflow.com/questions/40298440
复制相似问题