本章主要讲解了编译器的功能,程序员编写的代码称为源代码,而源代码在计算机上无法运行的,需要通过编译器生成本地代码才能在计算机上运行,每个源代码编程语言都需要专用的编译器,编译器通过语法解析、句法解析、语义解析等才能生成本地代码,根据CPU的不同,本地代码也不同,正如上一章所说的运行环境问题,一段代码仅靠编译是无法直接运行的,还需要进行链接处理,生成EXE文件,通过双击加载到内存中进行处理,当程序运行时还会生成两个额外的组,栈和堆,他们是通过程序的运行得到的。
除此之外,我还知道了CPU能解释和执行的程序叫本机代码;将多个目标文件拼接成一个EXE文件的工具叫链接器;扩展名。obj的目标文件的内容是本机代码;由多个目标文件打包而成的文件叫库文件;包含DLL文件中的函数调用信息的文件叫导入库;程序运行时动态分配的内存空间叫堆。对源代码进行编译后可得到本机代码,通过编译和链接可得到EXE文件,对源文件进行编译后可得到目标文件,链接器会从库文件中提取必要的目标文件并将它们拼接成一个EXE文件。在程序运行时进行动态链接的DLLwenjain也属于库文件。转储是指将文件内容按1字节2位十六进制数的形式显示出来。使用库文件可以避免在链接器的参数中指定一大堆目标文件。一个库文件可以打包多个目标文件,还可以隐藏标准函数的源代码。内存中的程序是由变量空间、函数空间、栈空间和堆空间四个区域组成的。在加载程序的内存空间中,会生成栈和堆两个区域。