実行可能ファイルはコードをさまざまなセクションに保存することを読みました。たとえば、データなどの別のセクションです。これは、Win、MacO、または Linux などのさまざまなプラットフォーム間で共通ですか?
それについてのいくつかの洞察は本当に役に立ちます。
実行可能ファイルはコードをさまざまなセクションに保存することを読みました。たとえば、データなどの別のセクションです。これは、Win、MacO、または Linux などのさまざまなプラットフォーム間で共通ですか?
それについてのいくつかの洞察は本当に役に立ちます。
実行可能ファイルにはいくつかのセクションまたはセグメントがあるという点であなたは正しいです: ただし、それらのすべてがコードであるとは限りません。
通常、コードには 1 つのセグメントがあります。ELF と PE では、これは通常 .text と呼ばれます。動的リンケージ データ、ハードコードされた文字列、読み取り専用データ、グローバル変数などを格納するために、追加のものがあります。
Wiki や Google ではなく、これらを自分で確認するには、以下を試してみてください。
Windows の場合: Visual Studio の一部である DUMPBIN.EXE というツールがあります。それを手に入れることができない場合は、Dependency Walker (無料でダウンロード可能) を使用してください。これは、PE および PE32+ (つまり、64 ビット) ファイルを解析します。
Linux の場合: ELF ファイルには objdump -x または readelf (どちらもほとんど同じですが、オプションが少し異なります) を使用します。
Mac の場合: otool -l を使用して、Mach-O ファイルのロード コマンド (セクションとセグメントを表示) を確認します。
いずれかまたはすべてのツールを使用することで、うまくいけば、物事がどのように機能するかをよりよく理解できるようになります。
お役に立てれば、
TG
Windows は、Portable Executable 形式を使用します。
*nix は通常、実行可能でリンク可能な形式を使用します。以前は、SOM、a.out、ECOFF、XCOFF、COFF などを使用していました。
OS X と iOS (および NeXT、歴史ファン) は Mach-O を使用します。
PowerPC システムは、以前の Mac OS で使用されていた Preferred Executable Format と一部の形式の BeOS を引き続きサポートしています。
おそらくhttp://en.wikipedia.org/wiki/Comparison_of_executable_file_formatsから始めてください