The Portable Executable (PE) format is a file format for executable, object
code, and DLLs, used in 32-bit and 64-bit versions of Windows operating
systems. The term "portable" refers to the format’s portability across all
32-bit (and by extension 64-bit) Windows operating systems. The PE format is
basically a data structure that encapsulates the information necessary for the
Windows OS loader to manage the wrapped executable code. This includes dynamic
library references for linking, API export and import tables, resource
management data and thread- local storage (TLS) data. On NT operating systems,
the PE format is used for EXE, DLL, OBJ, SYS (device driver), and other file
types.
The PE format is a modified version of the Unix COFF file format. PE/COFF is an
alternative term in Windows development. On Windows NT operating systems, PE
currently supports the IA-32, IA-64, and AMD64/EM64T (or "x86-64") instruction
set architectures. Before Windows 2000, Windows NT, and thus PE, the MIPS, DEC
Alpha, and PowerPC instruction set architectures was supported. Because PE is
used on Windows CE, it continues to support several variants of the MIPS
architecture, and also supports the ARM (including Thumb) and SuperH
instruction set architectures.