Portable Executable

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
Portable Executable
拡張子 .exe.obj.dll.sys
MIMEタイプ application/vnd.microsoft.portable-executable[1]
マジック
ナンバー
MZ 0x00(×10) PE 0x00 0x00
開発者 マイクロソフト
種別 バイナリ実行可能オブジェクト共有ライブラリ
派生元 COFF

Portable ExecutablePE)は、主に32ビットおよび64ビット版のMicrosoft Windows上で使用される実行ファイルファイルフォーマットである。PEフォーマット自体はオペレーティングシステムやハードウェアに依存しない設計となっているため、UEFIアプリケーションや.NETアプリケーションのバイナリフォーマットとしても使用されている。また、前述のUEFIとの整合性の確保や、Microsoft製OSとのマルチブート環境の構築を容易にする目的で、x86およびx86-64アーキテクチャにおけるLinuxカーネル実行ファイルブートローダなど、非Windows系OSのシステムファイルの一部でも用いられている。

EXEフォーマットとの互換性を持たせるため、MS-DOSプログラムがバイナリの先頭に組み込まれており、PEバイナリをMS-DOS上で実行すると、「This program cannot be run in DOS mode.」のような「DOSでは実行できない」というメッセージが表示され、プログラムが終了するようになっている。MS-DOSプログラムの後ろに、PE固有の識別子と、COFFに似たデータ構造があり、MS-DOSヘッダによってそのオフセットが指されている。

さまざまなCPUアーキテクチャに対応するため、内部に判別用のフラグを持っている。実行時にDLLを動的にリンクし、コンポーネントレベルでのバグフィックス、互換性の維持が行われるようになっている。また、リソース領域にアイコン等を格納でき、GUI上で表示された場合アイコンがグラフィカルに表示され、ソフトウェアが容易に判別できるようにできる。

主な対応CPUアーキテクチャ[編集]

  • x86:呼ばれるアーキテクチャ。i386以降のインテルおよび互換CPU上で実行された、一般的なWindowsおよびx64版Windowsで実行できる。Xboxでも標準実行形式として採用されている可能性がある。これはXboxがx86対応CPU及びWindows 2000のサブセットで構成されていることから推測できる。i386版のUEFIアプリケーションの記述にも用いられているほか、多くのLinuxディストリビューション上でも利用可能である。
  • Intel 64/AMD64 : 64ビット対応のx86命令。Windows XP x64 EditionおよびWindows Vistaで実行できる。x86-64版のUEFIアプリケーションの記述にも用いられており、同アーキテクチャ向けのGNU/Linuxシステム上でも利用できる。
  • Alpha : Alphaプロセッサ上で動作するWindows NTでのみ実行できる。Alpha版Windowsはすでに開発が終了している。
  • PowerPC : PowerPC版Windows NTでのみ実行できる。PowerPC版Windowsはすでに開発が終了しているが、Xbox 360でも同形式が採用されている可能性が高い。これは同機がカスタムPowerPC及びWindows XPのサブセットで構成されていることから推測できる。[独自研究?]
  • ARMMIPSSH-3/4 : Windows CEがサポートするアーキテクチャ。

脚注[編集]

  1. ^ Andersson, Henrik (2015年4月23日). “application/vnd.microsoft.portable-executable” (英語). IANA. 2017年3月26日閲覧。

外部リンク[編集]