じっこう‐ファイル〔ジツカウ‐〕【実行ファイル】
実行ファイル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/17 02:31 UTC 版)

プログラムの実行 |
---|
一般的な概念 |
コードの種類 |
コンパイル戦略 |
有名なランタイム |
|
有名なコンパイラとツールチェーン |
|
実行ファイル(じっこうファイル、英: Executable、Executable file)とは、コンピュータがタスクを実行するための解釈可能な命令を含むファイルである[1]。実行可能ファイル、実行可能プログラム、実行形式ファイル、あるいは単に実行形式とも呼ばれる。これと対になるのがデータファイルであり、これは実行ファイルにより解析されることで初めてコンピュータにとって意味があるものとなる。
実行ファイルかどうかの厳密な定義は文脈によるところがある。"命令" とは多くの場合、特定のCPUの機械語を格納したバイナリのことを指す(この形式の実行ファイルを単に「バイナリ(ファイル)」と呼ぶこともある)[2]。場合によっては、インタプリタに解釈させる中間コードやスクリプト言語(シェルスクリプトやバッチファイルを含む)も実行ファイルと呼ばれることがある。また、オペレーティングシステムによっては実行ファイルであることを示すファイル名の規約が存在する(拡張子 ".bin" ".exe"など)。あるいはファイルのメタデータで実行ファイルかどうかを示す(例えばUNIX系オペレーティングシステムのファイルパーミッションビット)。
実行ファイルの生成
実行ファイルは人間が理解しやすい高水準言語のソースコードとしてソフトウェアを開発する方が格段に楽であるが、機械語を手組みすることも可能である。場合によっては、人間が解読可能であるものの機械語の命令セットと密に関連しているアセンブリ言語をソースコードとして使うこともある。高水準言語は実行可能な機械語ファイルか実行可能ではないオブジェクトファイルにコンパイルされる。アセンブリ言語の場合はこの過程をアセンブルと呼ぶ。オブジェクトファイルをいくつかリンクして実行ファイルを作成する。オブジェクトファイルは実行可能かにかかわらず、一般にELF等のコンテナフォーマットに保存され[3]、生成された機械語は.text(実行コード)セクション、.data(静的変数)セクション、.rodata(静的定数)セクション等に分割され構造化される。
オペレーティングシステム、ファームウェア、ブートローダ等のシステムによって実行されるには、実行ファイルはシステムのABIに従う必要がある[4]。もっとも単純な形としては、ファイルをメモリに読み込みアドレス空間の最初に移動してそこから実行することであるが、より複雑な場合は実行ファイルには別々のエントリーポイントを指定する追加のメタデータが付属する。例えば、ELFではエントリーポイントはヘッダーのe_entry
フィールドに格納されており、実行を開始する(仮想)メモリアドレスを指定している。GCC(GNUコンパイラコレクション)では、このフィールドは_start
シンボルによりリンカによって指定される。
実行ファイルには通常ランタイムシステムも含まれており、ランタイム言語機能(タスクスケジュール、例外処理のハンドル、静的コンストラクタやデストラクタの呼び出し等)や特定のオペレーティングシステムのシステムコールを呼び出し、引数や環境変数を渡し戻り値を得る命令セット、そしてファイルハンドル等のリソースを解放して開始/終了処理を行う機能が含まれる。C では、実際のエントリーポイントを含みランタイムライブラリを呼び出し開始/終了処理を行う crt0 オブジェクトをリンクすることで実現している[5]。
実行ファイルには実行に必要な環境についての情報、デバッグ情報、シンボル情報など、ソースコードから生成される機械語プログラム自体に含まれない情報も多く格納されることがある。場合によっては、例えば組込みシステムの開発やコンパイル、リンク、ローダの動作を単純に学習したい場合等、これを省略したい場合がある。C では、通常のラインタイムを省略することができ、その代わりに明示的にリンカスクリプトを指定し、エントリーポイントを生成してmain
を呼び出したりカーネルに終了コードを返すといった開始/終了処理を行う[6]。
実行ファイルはプロセッサ固有であるだけでなくオペレーティングシステム固有でもある。
実行ファイル形式
実行ファイル形式は実行ファイルのためのファイル形式、すなわちプログラムを実行ファイルとして収納する形式である。コンテナフォーマットの一種。
一定の規格に沿ってプログラムがファイル内に配置されることで、プロセッサ・OSが実行ファイルをロードできる。ゆえに各実行プラットフォームは対応する実行ファイル形式を定めている。以下はその一例である。
実行ファイル形式 | 拡張子 | 利用プラットフォーム |
---|---|---|
ELF | .bin
|
Linux |
Mach-O | macOS, iOS | |
PE | .exe
|
Windows |
Dalvik Executable | .dex
|
Android、Google Chrome OS |
脚注
- ^ “executable”. Merriam-Webster's Online Dictionary. Merriam-Webster. 2008年7月19日閲覧。
- ^ “Machine Instructions” (英語). GeeksforGeeks (2015年11月3日). 2019年9月18日閲覧。
- ^ “Chapter 4: Object Files”. refspecs.linuxbase.org. 2019年9月18日閲覧。
- ^ Boelen, Michael (2019年5月15日). “The 101 of ELF files on Linux: Understanding and Analysis - Linux...” (英語). Linux Audit. 2019年9月18日閲覧。
- ^ content, Tim Fisher Tim Fisher has 30+ years' professional technology support experience He writes troubleshooting. “List of Executable File Extensions” (英語). Lifewire. 2019年9月18日閲覧。
- ^ McKellar, Jessica (2010年3月16日). “Hello from a libc-free world! (Part 1)”. 2019年9月18日閲覧。
関連項目
外部リンク
- Windows実行可能形式
- EXE File Format at What Is
実行ファイル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/01/30 16:19 UTC 版)
MS-DOSにおける実行ファイルの形式は、現在のUNIX系環境で言うシェルスクリプトに類似したコマンドのバッチ処理を記述するバッチファイル(拡張子はBAT)と、CPUが直接実行するバイナリファイルに大別することができる。 このうちバイナリファイルには、単一のセグメントを使うCOM形式、複数のセグメントが使用される場合のEXE形式、さらにデバイスドライバとしてSYS形式が存在し、それぞれ同名の拡張子を持つ。 COM形式の実行ファイルは、バイナリ読み込み時に設定されるコード・データ・エクストラ・スタックの各セグメントレジスタの値が同一アドレスに設定され、プログラム内部でセグメントレジスタを操作しない場合は単一セグメント、最大64KBのメモリ空間を操作する。CP/M 80用に書かれた8080用のアセンブリ言語のソースコードを8086へコンバートした場合を想定したメモリモデルであるが、COM形式のバイナリであってもプログラム側で適切にセグメントレジスタを操作することで64KB以上の空間へのアクセスが可能である。 このうち.SYS形式のバイナリは、原則的に起動時に一度だけ実行されるCONFIG.SYSに記述する以外の方法では直接読み込むことができない。
※この「実行ファイル」の解説は、「MS-DOS」の解説の一部です。
「実行ファイル」を含む「MS-DOS」の記事については、「MS-DOS」の概要を参照ください。
実行ファイル
「実行ファイル」に関係したコラム
-
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)のインディケーターとは、チャートを分析するためのテクニカル指標のことです。MT4のインディケーターには、罫線分析ツール...
- 実行ファイルのページへのリンク