《程序是怎么跑起来的》第八章

源代码完成后,就可以编译生成可执行文件了,负责实现该功能的是编译器。

CPU能直接解析并运行的不是源代码而是本地代码的程序,作为计算机大脑的Pentium等CPU,也能解释已经转换成本地代码的程序内容。编译器转换源代码后,就会生成本地文件。不过,本地文件是无法直接运行的。为了得到可以运行的EXE文件,编译之后还需要进行“链接”处理。

EXE文件是作为单独的文件储存在硬盘中的,通过资源管理器找到并双击EXE文件,就会把EXE文件的内容加载到内存中运行。EXE文件中给变量及函数分配了虚拟的内存地址。在程序运行时,虚拟的内存地址会转换成实际的内存地址,连接器会在EXE文件的开头,追加转换内存地址所需的必要信息。EXE文件的在配置信息,就成为了变量和函数的相对地址。相对地址表示的是相对于基点地址的偏移量。还有就是EXE文件中并不存在栈及堆的组。栈和堆需要的内存空间是在EXE文件加载到内存后开始运行时得到分配的。

猜你喜欢

转载自www.cnblogs.com/lee-88/p/10574592.html
今日推荐