因此.exe文件是一个可以由Windows执行的文件,但它究竟包含什么?处理器特定的汇编语言?或者是某些被Windows识别的中间语句将其转换为特定处理器的程序集? Windows在“执行”文件时对文件做了什么?
答案 0 :(得分:40)
MSDN有一篇文章“An In-Depth Look into the Win32 Portable Executable File Format”,它描述了可执行文件的结构。
基本上,.exe包含几个数据块和有关如何将它们加载到内存中的说明。其中一些部分碰巧包含可以执行的机器代码(其他部分包含程序数据,资源,重定位信息,导入信息等)。
我建议您获取Windows Internals的副本,以获取运行exe时会发生什么的完整描述。
对于本机可执行文件,机器代码是特定于平台的。 .exe的标题表示.exe的用途。
运行本机.exe时会发生以下情况(非常简化):
托管可执行文件包含MSIL(Microsoft中间语言),可以编译,以便它们可以针对CLR支持的任何CPU。我并不熟悉CLR加载器的内部工作原理(本机代码最初用于启动CLR并开始解释MSIL) - 也许其他人可以详细说明。
答案 1 :(得分:12)
我可以告诉你.exe文件中的前两个字节包含什么 - 'MZ'。我的意思是人物'MZ'。
它实际上代表:Mark Zbikowski。设计exe文件格式的人。
答案 2 :(得分:9)
1和0!
This wikipedia link将为您提供用于Windows应用程序的可移植可执行文件格式所需的所有信息。
答案 3 :(得分:1)
EXE文件实际上是一种称为可移植可执行文件的文件。它包含二进制数据,可以由处理器读取并执行(基本上是x86指令)。还有一个很多的头数据和其他杂项内容。实际的可执行代码位于名为.text
的部分中,并存储为机器指令(特定于处理器)。这段代码(以及.EXE的其他部分)被放入内存,CPU被发送到它,它开始执行。 (请注意,实际发生了更多接口;这是一个简化的解释)。