このコード部分で短い関数と大きい関数はどれですか? large はlong dwordと同じですか?
mov eax, ebx
cmp [ebp+var_1], 0
jz short loc_413123
call sub_40341C
pop large dword ptr fs:0
add esp, 0Ch
jz short loc_413123
このジャンプのオフセット (つまり、距離) が非常に小さいため、1 バイトに収まるので、このジャンプは単純な 2 バイトにコンパイルされています。
0x74 [1-byte-offset]
距離が大きかった場合、コンパイラはジャンプを別の方法でエンコードする必要があり、より多くのメモリを消費します。
0x0f 0x84 [4-byte-offset]
を使用short
すると、IDA Pro は、このジャンプが使用しているエンコードの種類を単純に通知します。
pop large dword ptr fs:0
far ポインターfs:0
であるIDA の注意を喚起する方法は、通常のオフセット ( ) ですが、セグメント セレクター ( ) を使用することです。つまり、データの幅 ( dword )とは関係ありませんが、アドレス(セグメント + オフセット) とは関係ありません。ただし、実際に新しい情報を追加するわけではありません。その行は単に意味し、別の逆アセンブラーから得られる逆アセンブリである可能性があります。0
fs
large
large
pop dword ptr [fs]
逆アセンブリを読むときは、これらのキーワードは両方とも安全に無視できます。また、独自のアセンブリ コードを記述するときは、これらのキーワードは必要ありません。