这个问题里的信息量太大,需要好几本书才能回答。只针对的题目给简单的说说一个.exe是怎么生成的。
程序需要依靠源文件来编译,编译之后生成中间代码(.obj)文件,之后依靠链接器将所有的.obj文件以及依靠的.lib文件链接起来生成一个.exe的文件。
这是最简单的理解,现在稍微展开点说说.exe文件。
在Windows中,所有的可执行文件(.exe, .dll, .ocx, .sys等等)都是按照一定文件内容格式来组织——PE格式。PE格式记录了一个程序文件加载运行过程中的信息,例如文件类型,是一个dll还是一个exe;运行的平台,32位系统还是64位系统等等。当一个程序运行的时候,程序的加载器会根据PE格式的内容将程序文件中的数据段,代码段等等映射到内存中,并正确的导入程序要使用的系统API,同时要将文件中的一些偏移地址修正为映射入内存之后的地址,之后调用程序代码的入口点来执行。就是这样一个过程涉及到了系统的内存管理,进程管理,线程调度等等一系列问题。
而这些PE格式的内容就是链接器在链接程序的时候填入的,换句话说就是链接器生成了一个PE文件用于执行。
每个 *** 作系统都会有自己所支持的可执行文件格式。PE格式是Windows平台独有的。
EXE是在OS/2、MS-DOS和Windows系统中通用的可执行文件的扩展名。exe文件比较复杂,属于一种多段的结构,是DOS最成功和复杂的设计之一。
EXE File 可执行程序 一种可在 *** 作系统存储空间中浮动定位的可执行程序。MS-DOS和MS-WINDOWS下,此类文件扩展名为·exe。exe用以标识可执行文件的文件扩展名。用户在提示行中输入不带 .exe扩展名的文件名后按 Enter 键就能运行可执行程序。
扩展资料
EXE 包括以下几种主要的文件格式:
1、DOS可执行文件:最简单的可执行文件格式,可以在DOS和Windows中运行。它通过在文件头添加ASCII字符串“MZ”(16进制中表示为4D5A)来标识。“MZ”是MS-DOS开发者之一的马克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写。
2、16位新可执行文件:通过在文件头添加ASCII字符串“NE”来标识。它只能运行在Windows和OS/2系统,而不能在DOS下运行。
3、16/32位混合式线性可执行文件:通过在文件头添加ASCII字符串“LE”来标识。它仅用来在Windows 3.x和Windows 9x中替代VxD驱动。
参考资料来源:百度百科—exe文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)