2008年03月06日

オブジェクトファイル

って何???

オブジェクトファイル(Object File)またはオブジェクトコード(Object Code)とは、コンパイラがソースコードを処理した結果生成される中間的なコード表現である。オブジェクトファイルの内容はバイナリであり、コンパクトで構文解析済みのコードである。オブジェクトファイル群をリンクすることによって最終的な実行ファイルやライブラリが作成される。オブジェクトファイルのほとんどは機械語である(コンピュータのCPUが直接実行できるコード)。オブジェクトファイルフォーマットはコンパイラやアセンブラが生成するオブジェクトファイルのファイルフォーマットである。

オブジェクトファイルにはオブジェクトコードだけでなく、リンカが実行ファイルやライブラリを作成するときに使用するリロケーション情報、プログラム内のシンボル情報、デバッグ情報などが含まれる。

オブジェクトファイルフォーマットには様々なものがある。本来各コンピュータはそれぞれオリジナルのフォーマットを持っていたが、UNIXや他の移植性のあるオペレーティングシステムが普及するに従ってCOFFやELFなどのフォーマットが定義され、様々なシステムで使われるようになった。リンカの入力と出力に同じファイルフォーマットを使うのが一般的であるため、オブジェクトファイルフォーマットは実行ファイルフォーマットでもある。

オブジェクトファイルフォーマットの設計や選択はシステム全体の設計に関わる問題である。リンカの性能に直接関係してくるため、プログラム開発の効率に影響する。また、同じフォーマットを実行ファイルでも使用する場合、プログラムの起動時間にも影響する。多くのオブジェクトファイルフォーマットでは同種のデータを集めた形式でブロック化されており、仮想記憶システムで必要に応じてページ単位にロードすることができ、そのまま実行可能である。

最も単純なオブジェクトファイルフォーマットとしてMS-DOSのCOMフォーマットがある。COMファイルは固定アドレスにロードされるバイト列から構成されている。他のフォーマットは内部構造があり、何ページにも渡る仕様書でその構造が規定されている。

デバッグ情報はCOFFなどのフォーマットでは必須の部分だが、stabs、DWARFなどのフォーマットでは半ば独立したフォーマットとなっている。

GNUプロジェクトのBFDライブラリは様々なフォーマットのオブジェクトファイルについての共通のAPIを提供する。

典型的なオブジェクトファイルフォーマットでサポートされるデータ種別としては、テキストセグメント、データセグメント、BSS がある。
(以上、ウィキペディアより引用)

またコンピュータのはなしか?。。

相互リンク
デリヘル 横浜デリヘル情報 デリヘル大塚 渋谷デリバリーヘルス 新橋 デリヘル 錦糸町デリヘル 池袋 デリヘル 高田馬場 デリヘル 町田デリヘル情報

trackbacks

trackbackURL: