程序和.exe文件有什么区别?


回答 1:

基本上,“。exe文件”更具体。

.exe文件扩展名表示该文件包含几种相关格式之一的“可执行程序”。 (Wikipedia的摘要不错;现代Windows可执行文件采用Microsoft的PE格式。)

如今,有许多不同的格式可以由某种解释器执行-其中许多仅仅是人类使用某种文本编辑器编写的代码。 在较早的计算时代(大约从1970年代到1990年代),这种解释器不可行,因为速度和存储容量太有限了。 因此,为了执行程序,必须对其进行翻译,以便CPU可以直接运行该程序。

因此,“可执行程序”的文件格式至少包含

  • 程序代码,翻译为要在其上运行的任何计算机的机器代码

而且在大多数情况下

  • 一些信息描述了程序代码应如何在内存中排列,还需要哪些其他内存以及有关程序启动时系统应处于的状态的其他详细信息有关程序打算在其上运行的计算机类型的某些信息,主要是CPU类型和操作系统兼容性链接到程序使用的共享库,以及有关它们在内存中的位置的任何信息。 (在Windows中,这些是DLL)程序在运行时将使用的数据资源,例如图标,声音,向用户发送消息的文本字符串(可能是多种语言)

每个操作系统至少具有一种可以加载和运行的可执行程序文件格式。 通常,加载程序会检查与CPU和OS的兼容性,检查是否有必要的共享库,为要运行的程序创建一个新进程,将机器代码和数据资源加载到内存中进程地址空间中的指定位置,加载内存中尚未存在的所有共享库,并将所有链接的共享库映射到进程地址空间,最后启动进程运行。

因此,“程序”只是某人编写的东西,如果满足某些未指定的条件,它可能可以在某些计算机上运行。

.exe文件是可以在具有文件中指定的CPU,OS和共享库的任何计算机上运行的程序。


回答 2:

我会说.exe文件是程序的子集。 exe文件是程序,但并非所有程序都是exe文件。

所有程序都需要以一种或另一种方式执行,但可以将它们编译到库中并由其他exe文件执行。 或者可以将程序编译为Java之类的中间(字节)代码,然后由虚拟机执行。 或者程序可以是由解释程序解释的脚本。


回答 3:

我会说.exe文件是程序的子集。 exe文件是程序,但并非所有程序都是exe文件。

所有程序都需要以一种或另一种方式执行,但可以将它们编译到库中并由其他exe文件执行。 或者可以将程序编译为Java之类的中间(字节)代码,然后由虚拟机执行。 或者程序可以是由解释程序解释的脚本。