一:1.利源代码进行编译后可得到本机代码。
2. 通过编译和链接可得到EXE文件。
3. 对源文件进行编译可得到日标文件。例如,补源文件 wempikes进行编译可得到目标文件 sample.obj。日标文件的内容较是在机代码。
4.链接器会从库文件中提取必要的目标文件并将它们拼接成。EXE文件。在程序运行时进行动态链接的DLL文件也属于靠文件。
5. 将导人库中的信息链接到EXE文件,由此程序就可以在运行时调用 DLL中的函数了。
6.堆是一种可以根据程序自身的请求来分配和释放的内存空间。
二:编写好源文件之后,对源文件进行编译和链接就可以生成可执行文件了。编译和链接的操作需要使用編译器和链接器来完成。
负责将用C语言等高级语言编写的源代码翻译成本机代码的为编译器。用不同的编程语言编写的源代码需要使用该语言专译器来进行编译。用于将C语言源代码翻译成本机代码的编译成本机代码的编译器称为C编译器。
编泽器会读取源代码的内容并将其翻译成本机代码。
三:在 EXE 文件中,变量和函数被分配的內存出都是虚拟的,在程序运行时,这些虚拟的内存地址会转换成实际自存地址。链接器会在 EXE文件的开头记录需要进行内存地址转换自个位置,这些信息被称为重定位信息。
在EXE 文件中,重定位信息中记录的是变量和函数的相对地址。
所谓相对地址,就是某个地址与基地址之间的相对距离,也就是偏孩量。要想使用相对地址,就需要进行一些额外的处理。在源代码中,变量和函数都是分散在各个位置的,但在链接后的EXE 文件中,交園利函数会被集中起来分成两组连续排列。于是,每个变量的内存地过就可以表示为该变量相对于变量区起始位置的偏移量,每个函数的存地址也可以表示为该函数相对于函数区起始位置的偏移量。每个区的基地址是在程序运行时确定的。