オブジェクトファイルとは? わかりやすく解説

オブジェクトファイル

【英】object file

オブジェクトファイルとは、オブジェクトコード機械語による命令とデータ)で構成されファイルのことである。

ファイルとフォルダのほかの用語一覧
ファイルの種類:  イメージファイル  インターネット一時ファイル  インデックスファイル  オブジェクトファイル  BAKファイル  CABファイル  COMファイル

オブジェクトファイル

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/01/15 02:56 UTC 版)

オブジェクトファイル (object file) またはオブジェクトコード (object code) とは、コンパイラソースコードを処理した結果生成される(たいていはアセンブリ言語による assembler code file と、アセンブラによるそれのアセンブルを経由している)、コード生成の結果にしてバイナリコードを含む中間的なデータ表現のファイルである。オブジェクトファイル共有ライブラリのようにも使われることがある。名称としては、オブジェクトファイル、オブジェクトコードの他、オブジェクトプログラム(object program)[1]とも。

オブジェクトモジュールとは、ソースコードをコンパイルした結果の(静的リンクが行われる前の)機械語プログラムである。これらオブジェクトモジュールの集合体がオブジェクトファイルである。

中身は、機械語バイナリと、異なるモジュール間の相互参照を解決するシンボルテーブルリロケーションテーブル、スタック巻き戻し情報、コメント、さらにリンクまたはデバッグに使用されるメタデータが含まれる場合もある。

オブジェクトファイル群をリンクすることにより、最終的な実行ファイルライブラリが作成される。オブジェクトファイルのほとんどは機械語(コンピュータのCPUが直接実行できるコード)であり、オブジェクトファイルフォーマットコンパイラアセンブラが生成するオブジェクトファイルのファイルフォーマットである。

概要

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

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

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

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

セグメント

殆どの種類のオブジェクトファイル形式は、一般的なメモリ管理の手法のひとつである "メモリセグメント" という用語に由来する "セグメント" と呼ばれる単位でデータを分割して保持しており、それぞれデータの種類が異なる。プログラムがローダによってメモリに読み込まれると、ローダはメモリの複数の領域をプログラムに割り当てる。

典型的なオブジェクトファイルフォーマットでサポートされるデータ種別は以下の通りである。

  • ヘッダー情報 (ディスクリプティブ/コントロール情報)
  • コードセグメント ("テキストセグメント"、実行形式コード)
  • データセグメント (初期値を持つ静的変数)
  • 読み取り専用データセグメント (RODATA、初期値を持たない静的定数)
  • BSS セグメント (初期値を持たない変数や定数といった静的データ)
  • リンキングのための外部定義と参照情報
  • リロケーション情報
  • ダイナミックリンク情報
  • デバッグ情報

異なるオブジェクトファイル内のセグメントはセグメントの定義で決められた規則に従いリンカが結合する。例えば、DOSでは特別なセグメントの名前を決めたり結合されるべきかを定義した規則が存在する[3]


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

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

フォーマット

主なオブジェクトファイルフォーマットを以下に列挙する。

脚注

  1. ^ J.DONOVAN, JOHN (1972). systems programming. pp. 4,149. ISBN 0-07-085175-1 
  2. ^ IBM Corporation (1973). IBM OS Linkage Editor and Loader. http://www.bitsavers.org/pdf/ibm/360/os/R21.7_Apr73/GC28-6538-10_Linkage_Editor_Rel_21_Apr73.pdf 
  3. ^ Irvine, Kip R. (1993), Assembly language for the IBM-PC (2nd ed.), New York: Macmillan, ISBN 0-02-359651-1 

関連項目

外部リンク


オブジェクトファイル

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/17 03:54 UTC 版)

セグメント方式」の記事における「オブジェクトファイル」の解説

セグメントまたはセクションはオブジェクトファイルでも定義されている。異なるオブジェクトファイルにあるセグメント群は、セグメント定義時指定されルールに従ってリンケージエディタによって結合される

※この「オブジェクトファイル」の解説は、「セグメント方式」の解説の一部です。
「オブジェクトファイル」を含む「セグメント方式」の記事については、「セグメント方式」の概要を参照ください。

ウィキペディア小見出し辞書の「オブジェクトファイル」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「オブジェクトファイル」の関連用語

オブジェクトファイルのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



オブジェクトファイルのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【オブジェクトファイル】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのオブジェクトファイル (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのセグメント方式 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS