コンピューティングにおいて、オブジェクトコードまたはオブジェクトモジュールは、アセンブラまたはコンパイラの産物である。[ 1 ]
一般的に、オブジェクトコードとは、コンピュータ言語[ 2 ] 、通常は機械語(つまりバイナリ)またはレジスタ転送言語(RTL)などの中間言語で記述された一連のステートメントまたは命令のことです。この用語は、コードがコンパイルプロセスの目標または結果であることを示しており、初期の資料ではソースコードを「対象プログラム」と呼んでいました。[ 3 ]
オブジェクトファイルは、リンクされて実行可能ファイルまたはライブラリファイルを形成することができます。オブジェクトコードを使用するには、実行可能ファイル、ライブラリファイル、またはオブジェクトファイルのいずれかに配置する必要があります。
オブジェクトコードとは、まだ完全なプログラムにリンクされていないマシンコードの一部です。これは、完成品を構成する特定のライブラリまたはモジュールのマシンコードです。また、完成したプログラムのマシンコードには含まれていないプレースホルダやオフセットが含まれている場合もあり、これらはリンカがすべてを接続するために使用します。マシンコードはCPUが直接実行できるバイナリコードですが、オブジェクトコードではジャンプやモジュール間参照が部分的にパラメータ化されているため、リンカがそれらを補完できます。オブジェクトファイルは、メモリ内の特定の位置(多くの場合0)から始まると想定されています。オブジェクトファイルには、メモリを参照する命令に関する情報が含まれているため、リンカは複数のオブジェクトファイルを1つのプログラムに結合する際にコードを再配置できます。
アセンブラはアセンブリコードをマシンコード(オブジェクトコード)に変換するために使用されます。リンカは複数のオブジェクト(およびライブラリ)ファイルをリンクして実行可能ファイルを生成します。アセンブラ(および一部のコンパイラ)は、オブジェクトを介さずに直接マシンコードにアセンブルして実行可能ファイルを生成することもできます。[ 4 ]
従来、コンパイルの出力はオブジェクトコード、またはオブジェクトモジュールと呼ばれてきました。