webdevqa.jp.net

x86cmplおよびjne

割り当てのx86コードをトレースしていますが、「cmpl」が正確に何をするのか、「jne」が満たされるかどうかを予測する方法を考えていました。

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

また、これはIntel構文を使用します。

ありがとう。

9
Richarizard

cmpl $ 0x7から-0x10(%ebp)を減算し、フラグを変更します:AF CF OF PF SF ZF

  1. 関数の引数の1つである-0x10(%ebp)が0x7に等しい場合、フラグ[〜#〜] zf [〜#〜]が設定されます。
  2. jne 80484dbは、比較された2つの数値が異なる場合(ZF = 0)、80484dbにジャンプすることを意味します。

要約すると、コードは次のようになります。

compare A to B
jump into 80484db if they are different.
9
Omar MEBARKI