我想知道跳转指令是否JE
必须直接跟随CMP
指令。直到现在,我确实总是看到首先是 a CMP
,然后是 a JMP
。但是今天我发现了以下几点:
...
CMP DWORD PTR SS:[EBP+0xC], EAX
MOV ECX, DWORD PTR SS:[EBP+0x18]
PUSH ESI
MOV ECX, DWORD PTR SS:[EBP+0x18]
MOV DWORD PTR SS:[ECX],EAX
MOV EAX, DWORD PTR SS:[EBP+0x10]
MOV DWORD PTR SS:[EDI], 0x1
JE SHORT crtdll.6C250E66
....
首先,我是初学者。所以,我试着理解汇编语言。从逻辑上讲,我会说该JE
指令与CMP
该序列开头的指令相关。
所以,我的解释是,我们先比较,然后做一些MOV
和PUSH
操作,然后我们都在跳,对吗?
但是,正如我上面提到的,通常在比较之后跳转出现在下一行,有人可以在这里说一下延迟跳转指令的原因吗?还是正常的?