案例1:
cmp dword ptr[ebp + 18],00
mov eax, [ebp + 14]
je Game.exe+417442
案例2:
test eax,eax
jns Game.exe+47137
它总是看看寄存器eax吗?如果没有,我们如何知道它看起来用于确定跳转的寄存器?
答案 0 :(得分:5)
x86 Jcc
(其中cc
是条件代码)使用(R|E)FLAGS
register来确定是否满足条件。可以通过各种先前的指令更新标志。在传统的x86程序集中,通常会使用cmp
或test
指令在跳转指令之前设置标志。
如果您在this instruction reference和test
查看cmp
的文档,您会看到它们允许任何通用寄存器作为操作数。
我注意到cmp
和test
不是影响标志的唯一的操作,只是,当您编写自己的汇编代码时,它们通常是操作您将用于确定是否满足跳跃条件。