banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

《ゼロから始めるIDA逆向き学習》学習ノート-11(フラグレジスタ)

画像

キャリーフラグ#

キャリーフラグ(CF レジスタ):演算結果が負になるか、数値の上限を超える場合にトリガーされます。大まかな意味は、計算結果が範囲外になると CF フラグがトリガーされ、2 つの符号なし数値の差が負の場合も CF フラグがトリガーされるということです。

オーバーフローフラグ#

オーバーフローフラグは CF に似ていますが、符号付き数値に対して働きます。符号付き数値の計算が間違っている場合にオーバーフローフラグがトリガーされます。

符号フラグ#

任意の操作の結果が負の数である場合、SF がトリガーされます。SF は結果の符号を表すだけであり、結果が正しいかどうかを表すものではありません。

ゼロフラグ#

ZF は以下の条件でトリガーされます:内部的には減算の比較命令で、2 つのオペランドが同じである場合;増加または減少によって結果が 0 になる場合;差が 0 になる場合。

条件ジャンプとフラグ#

つまり、2 つのオペランドが同じ場合、JZ 命令がジャンプを実行します。最初の符号なしオペランドが 2 番目のオペランドよりも小さい場合、JB 命令がジャンプを実行します。最初の符号付きオペランドが 2 番目のオペランドよりも小さい場合、JL 命令がジャンプを実行します。通常、符号なし条件ジャンプと符号付き条件ジャンプの表の 3 番目の列を見るだけで十分です。

asm条件操作
JAz=0 and c=0above の場合ジャンプ
JAEc=0above または equal の場合ジャンプ
JBc=1below の場合ジャンプ
JBEz=1 or c=1below または equal の場合ジャンプ
JCc=1carry の場合ジャンプ
JECXZecx=0ecx が 0 の場合ジャンプ
JEz=1equal の場合ジャンプ
JZz=1zero の場合ジャンプ
JNEz=0not equal の場合ジャンプ
JNZz=0not zero の場合ジャンプ
JOオーバーフローoverflow の場合ジャンプ
JP偶数の 1 ビット(操作結果の 2 進数表現での 1 の数、01110000)parity の場合ジャンプ
JPE偶数パリティparity even の場合ジャンプ
JNP奇数の 1 ビットがないnot parity の場合ジャンプ
JPO奇数パリティparity odd の場合ジャンプ
JS符号ビットが 1sign の場合ジャンプ
JNS符号ビットが 0not sign の場合ジャンプ
JL/JNGE符号ビットとオーバーフロービットが同じless または not greater/equal の場合ジャンプ
JLE/JNGz=1 または符号ビットとオーバーフロービットが同じless または equal/not greater の場合ジャンプ
JG/JNLEz=0 かつ符号ビットとオーバーフロービットが同じgreater または not less or equal の場合ジャンプ
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。