当微软开始设计
Windows NT
时,很自然的,为了最小化项目启动时间,他们会使用以前写好的并且已经测试过的工具。用这些工具生成的并且工作的可执行和 OBJ 文件格式叫做 COFF (Common Object File Format 的首字母缩写)。COFF 的相对年龄可以用八进制的域来指定。COFF 本身是一个好的起点,但是需要扩展到一个现代操作系统如
Windows 95
和
Windows NT
的需要。这个更新的结果就是(
PE文件
)可移植可执行文件格式。它被称为"可移植的"是因为在所有平台(如x86,Alpha,MIPS等等)上实现的WindowsNT 都使用相同的可执行文件格式。当然,也有许多不同的东西如二进制代码的
CPU
指令。重要的是操作系统的装入器和程序设计工具不需要为任何一种CPU完全重写就能达到目的。
很久之前的可执行文件结构的原理还是十分简单的。将编程语言编译成OBJ文件,再将一个个的OBJ文件连接起来,再加上资源文件,就是一个完整的可执行文件,不同语言的开发过程都差不多。典型的例子就是Visual Basic早期系列,在编译过程中注意看目标目录,就会发现一个个OBJ文件出现然后消失。