x86 cmpl和jne

Ric*_*ard 10 x86 intel-syntax

我正在跟踪一些x86代码进行分配,我想知道究竟"cmpl"究竟是什么以及如何预测"jne"是否会被满足.

80484bf:    83 7d f0 07             cmpl   $0x7,-0x10(%ebp)
80484c3:    75 16                   jne    80484db
Run Code Online (Sandbox Code Playgroud)

此外,这使用Intel语法.

谢谢.

Oma*_*RKI 10

cmpl 从$ 0x7中减去-0x10(%ebp)并修改标志:AF CF OF PF SF ZF.

  1. if -0x10(%ebp)是你的函数参数之一,等于0x7,然后设置标志ZF.
  2. jne 80484db表示如果两个比较的数字不同(ZF = 0),则跳转到 80484db

要总结一下,您的代码相当于:

compare A to B
jump into 80484db if they are different.
Run Code Online (Sandbox Code Playgroud)

  • 不客气。是的,如果 -0x10(%ebp) 减去 $0x7 不等于,则 ZF 设置为 0 (2认同)