关于以下操作码参考: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?
您找到的第二个85
位于2字节的操作码表中,其中每个条目都以0F
为前缀。
“近”(rel32)version of JZ/JE is 0F 85
。 (哎呀,HTML摘要会截断编码列表,只会访问一些0F ..
rel32版本。或者实际上已经打破了非表格格式。请参阅英特尔的PDF原件。
那些操作码表不是指令集参考手册。不过,如果您只是需要快速参考,它们会很方便。如果您感到困惑,请查看完整手册中的说明(x86标签维基中的链接。