装配je,jns,jle哪个注册使用?

时间:2016-06-24 00:37:22

标签: assembly x86

案例1:

cmp dword ptr[ebp + 18],00
mov eax, [ebp + 14]
je Game.exe+417442

案例2:

test eax,eax
jns Game.exe+47137

它总是看看寄存器eax吗?如果没有,我们如何知道它看起来用于确定跳转的寄存器?

1 个答案:

答案 0 :(得分:5)

x86 Jcc(其中cc是条件代码)使用(R|E)FLAGS register来确定是否满足条件。可以通过各种先前的指令更新标志。在传统的x86程序集中,通常会使用cmptest指令在跳转指令之前设置标志。

如果您在this instruction referencetest查看cmp的文档,您会看到它们允许任何通用寄存器作为操作数。

我注意到cmptest不是影响标志的唯一的操作,只是,当您编写自己的汇编代码时,它们通常是操作您将用于确定是否满足跳跃条件。