Portable Executable

Portable Executable(PE)とは



Portable Executable(PE)形式は、主にMicrosoft Windows32ビットおよび64ビット版で使用される実行ファイルのフォーマットです。この形式は、実行可能なプログラム(EXE)、オブジェクトファイルダイナミックリンクライブラリ(DLL)、デバイスドライバ用のSYSファイル、およびフォントファイル(FON)などをサポートしています。PEフォーマットは、Windowsオペレーティングシステムのローダーが必要とする情報を整理されたデータ構造として包み込む役割があります。

PEは、エクステンシブル・ファームウェア・インターフェイス(EFI)の仕様に従い、EFI環境においての標準実行形式として使用されています。このことにより、UEFIアプリケーションや.NETアプリケーションのバイナリフォーマットとしても活用されています。さらに、PEは非Windows系のOSでも利用されており、特にマルチブート環境の構築を容易にするために、Linuxカーネルやブートローダーといったファイルでも採用されています。

PEフォーマットの仕様



Windows NTオペレーティングシステムでは、PEはIA-32IA-64、x86、x86-64(AMD64/Intel 64)、ARMおよびARM64といった命令セットアーキテクチャ(ISA)をサポートします。これに対して、Windows 2000以前のヴァージョンではMIPS、Alpha、PowerPCアーキテクチャもサポートされていました。Windows CEでもPE形式が利用され、MIPSやARM、SuperHアーキテクチャも引き続きサポートされています。

PEフォーマットは、様々なCPUアーキテクチャに対応するため、内部に識別用のフラグを持ち、実行時にはDLLを動的にリンクします。これにより、ソフトウェアのバグ修正や互換性を維持することが可能です。また、アイコンなどのリソースを保存でき、GUI上ではこれらのアイコンが視覚的に表示され、ユーザーは容易にソフトウェアを識別できるようになります。

PEの歴史



PEフォーマットは、1993年にマイクロソフトがWindows NT 3.1を発表した際に導入され、その後の全てのWindowsオペレーティングシステムでサポートされてきました。特に、Windowsの互換性を保ちつつ、マルチプラットフォームでの利用を考慮されて設計されています。PEフォーマットには、既存のDOSとNTシステムのEXEフォーマットとの互換性を持たせるために、MS-DOSプログラムがファイルの先頭に組み込まれています。これにより、PEバイナリMS-DOS上で実行した場合、最初にこのプログラムが実行されます。

対応アーキテクチャ



PEは、特定の命令セットアーキテクチャに対応しており、例えばx86アーキテクチャでは32ビットのコードを対象としており、Windowsアプリケーションが格納されたPEファイルはx86版、x86-64版、IA-64版Windowsで直接実行できます。一方で、ARM版Windowsではエミュレーションを利用して実行されます。また、Xboxプラットフォームでも、PE形式が内部的に使用されています。

他のOSでの利用状況



PEフォーマットは、ReactOSのような他のオペレーティングシステムでも利用されています。かつてはSkyOSやBeOS R3など他のOSでも採用されていたが、その後ELF形式に移行しました。一方、Mono開発環境は、Microsoftの.NET Frameworkとの互換性を持つためPEフォーマットを使用しており、Unix系OSではWineを通じてWindowsバイナリを実行することが可能です。さらに、HX DOS Extenderを利用することで、32ビットDOSバイナリにPE形式を使用することができ、DOS版Wineのような用途が展開されています。

結論



Portable Executable(PE)は、その柔軟性と互換性に優れ、Windowsプラットフォームはもちろん、他のオペレーティングシステムにおいても幅広く使用され続けています。PEフォーマットの進化は、今後も注目されることでしょう。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。