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とのマルチブート環境の構築を容易にする目的で、x86x86-64ARMアーキテクチャにおけるLinuxカーネル実行ファイル(EFI Boot Stub)[2]ブートローダなど、非Windows系OSのシステムファイルの一部でも用いられている。

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

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

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

  • x86:i386以降のインテルおよび互換CPUのアーキテクチャ。PEにおいては、その中でも32ビットのコードを対象としている。x86を対象とするWindowsアプリケーションが格納されたPEは、x86版、x64IA-64版Windowsで直接実行できる。ARM版Windowsにおいてはエミュレーションによって実行できる。Windows NT 4.0においては、AlphaMIPSPowerPC版においてエミュレータが存在した[4]。Xboxにおいては、ビルド途中の中間形式として採用されている[5]。i386版のUEFIアプリケーションの記述にも用いられている。
  • x64: 64ビット対応のx86命令。x64版Windowsで実行できる。x86-64版のUEFIアプリケーションの記述にも用いられている。
  • IA-64
  • Alpha: Alphaプロセッサ上で動作するWindows NTでのみ実行できる。Alpha版Windowsはすでに開発が終了している。
  • MIPS: Windows CE、Windows NTでサポートされていた。
  • PowerPC: PowerPC版Windows NTでのみ実行できる。Xbox 360でも内部的な形式として用いられている[6]
  • SH-3/4: Windows CEがサポートするアーキテクチャ。
  • ARM: Windows CE、Windows RTWindows 10でサポートされている。
  • AArch64 (ARM64): Windows 10でサポートされている。

脚注[編集]

  1. ^ Andersson, Henrik (2015年4月23日). “application/vnd.microsoft.portable-executable” (英語). IANA. 2017年3月26日閲覧。
  2. ^ The EFI Boot Stub”. The Linux Kernel Archives. 2019年7月17日閲覧。
  3. ^ PE Format” (20199-03-18). 2019年7月17日閲覧。 “The linker places a default stub here, which prints out the message "This program cannot be run in DOS mode" when the image is run in MS-DOS.”
  4. ^ 西川和久 (1996年5月7日). “技術者必見!!Part2 Windows NT 4.0のあまり知られていない事実”. Impress PC Watch. 2019年7月17日閲覧。
  5. ^ Myria (2004年11月25日). “[PATCH] Xbox PE subsystem support”. Narkive. 2019年7月17日閲覧。 “It is known that Microsoft's own Xbox Development Kit (XDK) compiles developers' games into standard PE format, with subsystem 14. The resulting PE file is later converted to the PE-like "XBE" format.”
  6. ^ Vanik, Ben (2011年2月28日). “Building an Xbox 360 Emulator, part 3: Feasibility/OS”. Various Oddities. 2019年7月17日閲覧。 “On the 360 these are XEX files, which are packages that contain a bunch of resources detailing a game as well as an embedded PE-formatted EXE/DLL file containing the actual code.”

関連項目[編集]

外部リンク[編集]