EXEファイル

EXEフォーマットとはMS-DOSおよびMS-DOSの後継OSであるWindowsおよびOS/2の実ファイルフォーマットである。

MS-DOSで実可能なバイナリフォーマットには他に、COMフォーマットと言うファイルフォーマットが存在する。COMフォーマットは、コード、データ、スタックの全てのセグメントが同一であるモデルで、開始番地も固定の0x100であるメモリイメージそのものであり、シンボル再配置も無いのに対し、EXEフォーマットは連続した一つのメモリイメージで、コード、データ、スタックの全てが別々の複数のセグメントを用いてアクセスする必要のある場合に対応し、開始アドレスおよびその時のセグメントレジスタの値をファイル先頭から相対指定することが可能でセグメント指定の再配置エントリが存在する。

C言語による表記は以下の通りである。尚、この定義はWineで使われているヘッダファイルの定義から引用した。WORDは16ビット整数であり、DWORDは32ビット整数である。

 typedef struct _IMAGE_DOS_HEADER {    WORD  e_magic;      /* 00: MZ Header signature */    WORD  e_cblp;       /* 02: Bytes on last page of file */    WORD  e_cp;         /* 04: Pages in file */    WORD  e_crlc;       /* 06: Relocations */    WORD  e_cparhdr;    /* 08: Size of header in paragraphs */    WORD  e_minalloc;   /* 0a: Minimum extra paragraphs needed */    WORD  e_maxalloc;   /* 0c: Maximum extra paragraphs needed */    WORD  e_ss;         /* 0e: Initial (relative) SS value */    WORD  e_sp;         /* 10: Initial SP value */    WORD  e_csum;       /* 12: Checksum */    WORD  e_ip;         /* 14: Initial IP value */    WORD  e_cs;         /* 16: Initial (relative) CS value */    WORD  e_lfarlc;     /* 18: File address of relocation table */    WORD  e_ovno;       /* 1a: Overlay number */    WORD  e_res4;     /* 1c: Reserved words */    WORD  e_oemid;      /* 24: OEM identifier (for e_oeminfo) */    WORD  e_oeminfo;    /* 26: OEM information; e_oemid specific */    WORD  e_res210;   /* 28: Reserved words */    DWORD e_lfanew;     /* 3c: Offset to extended header */ } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;


COMフォーマットと区別するために、MS-DOSにおいてはファイル名には.EXEという拡張子が付けられ、ファイルの先頭には0x5A4D(ASCIIコードで'MZ'という文字)のマジックナンバーが入っている。

また、拡張ヘッダという概念が後に付け加えられ、そこから指定されたヘッダに、WindowsOS/2の実ファイルの情報を指定し、これらのOS用に作られたプログラムが本来のアーキテクチャOSで実された場合は、その拡張ヘッダを解釈し、MS-DOS上で実された場合、実できない事を表示し終了させる等のプログラムを置くことが可能である。このようなフォーマットにはPortable Executable (PE)やNew Executable (NE),Linear Executable(LE,LX)等が存在する。また、Microsoft Windows 3.xの386エンハンスドモードのカーネルであるWIN386.EXEや、Microsoft Windows 95等のカーネルであるVMM386.VXDでは特殊な拡張ヘッダで内部に存在するプロテクトモードのカーネルコードや仮想デバイスドライバ等へのオフセットを保持しており、リアルモードでの初期化を普通のDOSプログラムとしてった上で、そのヘッダにあるプロテクトモードのコードを実していた。(WIN386.EXEではW3,VMM386.VXDではW4という識別子。)

EXEファイル」『フリー百科事典 ウィキペディア日本語版』(http://ja.wikipedia.org/)。2009年7月28日15時(日本時間)現在での最新版を取得。

続きを見る

おすすめ情報

高品質・低価格のインターネットプロバイダ
インターネットプロバイダー「ASAHIネット」はADSL, 光回線などのインターネット接続を業界最安値水準でを提供している。日経ビジネス・J.D. Power等のお客様満足度調査でも高い評価を得ており。「推奨度№1」といわれるのも納得だ。


2010年プロバイダー【顧客満足度】NO.1 トリプル受賞  ASAHIネット

入会・お問い合わせダイヤル
0120-030-275
携帯電話/PHS/IP電話などからは
03-3569-3526

10:00~19:00(土日祝~17:00)

書面での申し込みはこちら
資料請求

このページのトップヘ