Linear Executable

Linear Executableとは、OS/2やMicrosoft Windowsそして、一部のDOSエクステンダで使われたオブジェクトファイルフォーマットである。最初にOS/2 2.0で導入された。

特徴はIA-32のプロテクトモードを意識した、16ビットおよび32ビットの複数のセグメントに渡る実行イメージを保持可能なことである。特にWindowsにおいては、その性質上16ビットコードと32ビットコードが混在する必要のある仮想デバイスドライバ(VxD)で使われた。

他のEXEフォーマットの拡張フォーマットと同様に互換性のために、対応しないオペレーティングシステムで実行した場合、対応していない旨を表示して終了する等のDOSプログラムを最初に付ける事になっている。その拡張ヘッダから指されたオフセットに'LE'または'LX'と言うシグネチャで始まるファイルヘッダがある。(WindowsのVxDでは常にLE)

尚、Windows NT系に於いてはドライバも全てPortable Executableになっており使われていない。

 歴史 
LEフォーマットは、1990年代初頭、 16ビットから32ビットコンピューティングへの移行期に初めて導入された。これは、16ビットアプリケーションで使用されていた従来のNew Executable（NE）フォーマットの拡張として開発された。メモリ管理とアドレス指定の制限により、32ビットの代替としてLEが開発された。LEは、システムを保護モードで動作させることでNEの機能を拡張した。

LX と呼ばれる形式の拡張バージョンは、OS/2 Warp 専用に開発され、LE 形式に対する更なる拡張をサポートした。

 構造 
LE形式のファイルは、DOSシステムとの下位互換性を保つため、MZヘッダー（標準DOS実行可能ヘッダー）で始まる。MZヘッダー内のオフセットには0x3C、e_lfanewフィールドと呼ばれる32ビット値があり、拡張ヘッダー（LEヘッダー）へのポインタが格納される。LEヘッダーはASCII文字LE（OS/2 Warpの場合はLX）で始まる。Linear Executableでは、ファイルのオフセットと構造体は通常、LEヘッダーの先頭からの相対位置、またはファイル内の絶対オフセットとして定義される。

 外部リンク 
DOSエクステンダ DOS/4GのFAQ

Category:オブジェクトファイルフォーマット