第八章——从源文件到可执行文件
1.源文件如何通过编译转换成可执行文件
1)计算机只能运行本地代码
某种编程语言编写的程序就称为源代码,保存源代码的文件称为源文件。
源代码无法直接运行
原因:CPU能直接解析并运行的不是源代码而是本地代码的程序。
2)本地代码的内容
Dump:每个字节用2位十六进制数来表示的方式.
本地代码的内容就是各种数值的罗列。
3)编译器负责转换源代码
能够把C语言等高级编程语言编写的源代码转换成本地代码的程序称为编译器。
每个编写源代码的编程语言都需要其专用的编译器。
编译器不仅和编程语言的种类有关,和CPU的类型也是相关。这样同样的源代码就可以翻译成适用于不同CPU的本地代码。
在购买编译器时,通常说明产品名称及版本就OK。
4)仅靠编译是无法得到可执行文件的
编译器转换源代码后,生成的本地文件进行“链接”处理。
编译器收到选项的指示编译源文件后,生成扩展名为“.obj”的目标文件。把多个目标文件结合,生成1个EXE文件的处理就是链接,运行链接的程序就称为链接器。
5)启动及库文件
目标文件记述的是同所有程序起始位置相结合的处理内容,称为程序的启动。
库文件把多个目标文件集成保存到一个文件中的形式。
链接器把需要的目标文件抽取出来,并同其他目标文件结合生成EXE文件。
2.可执行文件加载到内存的运行机制
1)可执行文件运行时的必要条件
资源管理器找到并双击EXE文件,就会把EXE文件的内容加载到内存中运行。
3.程序运行时内存上的栈和堆
1)程序加载时会生成栈和堆
栈是用来存储函数内部临时使用的变量,以及函数调用时所用的参数的内存区域。
堆是用来存储程序运行时的任意数据及对象的内存领域。
以上为本章所学内容,下章见!
标签:可执行文件,文件,有感,程序,第八章,编译器,内存,源代码 From: https://www.cnblogs.com/zyk0915-/p/18042242