4

このコード部分で短い関数と大きい関数はどれですか? 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
4

1 に答える 1

4

短い

jz short loc_413123このジャンプのオフセット (つまり、距離) が非常に小さいため、1 バイトに収まるので、このジャンプは単純な 2 バイトにコンパイルされています。

0x74 [1-byte-offset]

距離が大きかった場合、コンパイラはジャンプを別の方法でエンコードする必要があり、より多くのメモリを消費します。

0x0f 0x84 [4-byte-offset]

を使用shortすると、IDA Pro は、このジャンプが使用しているエンコードの種類を単純に通知します。

大きい

pop large dword ptr fs:0far ポインターfs:0であるIDA の注意を喚起する方法は、通常のオフセット ( ) ですが、セグメント セレクター ( ) を使用することです。つまり、データの幅 ( dword )とは関係ありませんが、アドレス(セグメント + オフセット) とは関係ありません。ただし、実際に新しい情報を追加するわけではありません。その行は単に意味し、別の逆アセンブラーから得られる逆アセンブリである可能性があります。0fslargelargepop dword ptr [fs]


逆アセンブリを読むときは、これらのキーワードは両方とも安全に無視できます。また、独自のアセンブリ コードを記述するときは、これらのキーワードは必要ありません。

于 2012-12-29T22:17:21.220 に答える