exe里面的内容是什么
不知道发到这里合适不
之前听人说,exe的内容就是程序经过编译以后的机器码,可以直接执行。
而今天看到一本书上说,程序执行时整个程序的所有指令必须都已保存在内存中。(《计算机系统概论》)
于是就有一个问题。比如说游戏pes2010.exe的大小超过1G,总不可能把这1G的内容导入到内存中吧。
想搞清楚
1,exe里面的内容到底是什么
2,所谓的“整个程序的所有指令”还要通过exe里面的内容生成么
[解决办法]
1、exe除了二进制代码,还有个PE头,用来描述EXE文件的,比如加载地址、图片资源、版本信息什么的。
2、指令不用生成,是直接从EXE、DLL文件中读取、复制到内存中的,“程序执行时整个程序的所有指令必须都已保存在内存中”从某种角度上来说是正确的(在实模式下确实如此,只不过Windows的应用程序是在保护模式下运行,采用虚拟地址方式访问内存,实际文件并不一定要全部都在物理内存中,括号中的这些内容你知道有这么回事就行了,现在理解不了没关系)
一个游戏一般不会做成一个1G那么大的exe,如果真是如此是得导入内存中,不过游戏资源都是动态加载的,当进入某个场景时,再从磁盘文件中提取相关的资源用于显示,而且单从逻辑控制代码来说,游戏不可能很大的,都是图像、声音这些数据占用的空间多。
[解决办法]
之前听人说,exe的内容就是程序经过编译以后的机器码,可以直接执行。
而今天看到一本书上说,程序执行时整个程序的所有指令必须都已保存在内存中。(《计算机系统概论》)
于是就有一个问题。比如说游戏pes2010.exe的大小超过1G,总不可能把这1G的内容导入到内存中吧。
==========
EXE中的内容有编译之后的机器码,也有一些资源,比如位图,图标,甚至有的EXE文件将声音也做在里面。程序执行时指令确实要放在内存中,但是并不要求全部代码同时放进物理内存中。内存与物理内存是不一样的。