banner
lca

lca

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

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

画像

キャリーフラグ#

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

オーバーフローフラグ#

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

符号フラグ#

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

ゼロフラグ#

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

条件ジャンプとフラグ#

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

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