Win32 程序集条件跳转
Win32 assembly conditional jumps
关于以下操作码参考:http://ref.x86asm.net/coder32.html
我正在尝试更多地了解条件跳转。您会在上面引用的 link 中看到 "Jump short if zero/equal (ZF=0)" 的操作码是 74。因此,如果我们(在调试器中)二进制插入字节 74 04 并且 ZF 标志设置为 0,我们将看到 4[= 的短向前跳转32=] 字节:
0207FF9F 74 04 JE SHORT 0207FFA5
没问题。
稍后在同一个参考中,有一个类似的条件短跳转使用操作码 85 引用,但是如果您为条件跳转使用类似的字节长度弹出该代码,您会得到以下内容:
0207FFA5 850441 TEST DWORD PTR DS:[ECX+EAX*2],EAX
我显然不明白这里的东西,有人能解释一下吗?基于标志值的条件短跳是否限于操作码 70 到 7F?
您找到的第二个 85
在 2 字节操作码 table 中,其中每个条目都以 0F
.
为前缀
"near" (rel32) version of JZ/JE is 0F 85
。 (哎呀,HTML 提取截断了编码列表,只得到一些 0F ..
rel32 版本。或者实际上已经破坏了其余的非 table 格式。请参阅英特尔的 PDF原创.
那些操作码table不是指令集参考手册。不过,如果您只需要快速参考,它们会很方便。如果您感到困惑,请查看完整手册中的说明(x86 标签 wiki 中的链接。
关于以下操作码参考:http://ref.x86asm.net/coder32.html
我正在尝试更多地了解条件跳转。您会在上面引用的 link 中看到 "Jump short if zero/equal (ZF=0)" 的操作码是 74。因此,如果我们(在调试器中)二进制插入字节 74 04 并且 ZF 标志设置为 0,我们将看到 4[= 的短向前跳转32=] 字节:
0207FF9F 74 04 JE SHORT 0207FFA5
没问题。
稍后在同一个参考中,有一个类似的条件短跳转使用操作码 85 引用,但是如果您为条件跳转使用类似的字节长度弹出该代码,您会得到以下内容:
0207FFA5 850441 TEST DWORD PTR DS:[ECX+EAX*2],EAX
我显然不明白这里的东西,有人能解释一下吗?基于标志值的条件短跳是否限于操作码 70 到 7F?
您找到的第二个 85
在 2 字节操作码 table 中,其中每个条目都以 0F
.
"near" (rel32) version of JZ/JE is 0F 85
。 (哎呀,HTML 提取截断了编码列表,只得到一些 0F ..
rel32 版本。或者实际上已经破坏了其余的非 table 格式。请参阅英特尔的 PDF原创.
那些操作码table不是指令集参考手册。不过,如果您只需要快速参考,它们会很方便。如果您感到困惑,请查看完整手册中的说明(x86 标签 wiki 中的链接。