0
次の画像から分かるように、プログラム(この場合はprogram1とprogram 2)は実行中にメモリにマップされます。だから私はアセンブリコードを見て、boundary
program1/2とStaticLibの間に伝えることができますか?メモリ内で、セクションがプログラムか静的なlibかどうかをどのように伝えますか?
おかげで、
次の画像から分かるように、プログラム(この場合はprogram1とprogram 2)は実行中にメモリにマップされます。だから私はアセンブリコードを見て、boundary
program1/2とStaticLibの間に伝えることができますか?メモリ内で、セクションがプログラムか静的なlibかどうかをどのように伝えますか?
おかげで、
IIRCそれはOSやファイル形式によって異なります。 Windowsでは
は、静的ライブラリ関数は、通常のアドレス(関数の実アドレスが含まれています)
@xyz: jmp RealAddress
へ
call @xyz
によって参照されています。
通常、このファイルにはJMP
の領域があります。それらのJMP
ターゲットはすべて、リンクされたライブラリの一部です。
一般的に、一度リンクすれば分かりません。 – Jester
この図は完全に無意味です。あなたは何か "staticlib"がオブジェクトファイルとして表示されます。はい、あなたはそれを行うことができますが、それは無駄なアプローチであるため、通常は行われません。 オブジェクトファイルがメモリに存在しません。オブジェクトファイルは実行可能ファイル(または共有ライブラリ)としてリンクされています。 これは混乱するGee-Wiz図のようです。 – user3344003