编绎链接的概念

1.程序的构建

代码从编写完成后,经过编绎器的词法分析,语法分析,语义分格到生成中间代码,然后进行优化,生成最终的目标文件,最后经过链接口连接形成可执行文件。可执行文件被加载到内存运行,形成进程。
程序的构建

2.编绎

编绎即将C/C++语言翻译成汇编语言
词法分析:读源文件并扫描字符流,产生有效的记号流。
语法分析:对记号流分析,根据语法规生成语法短语,并生成语法树。
语义分析:对语义树进行处理,审查正确性。
生成中间代码:根据语义树生成目标汇编文件 。

3.链接
将各个目标文件合成系统可识别的可执行文件 。
生成代码段。
生成只读数据段。
生成资源段。
对外部DLL或系统API生成导入表,如果输入则生成导出表。
根据可执行文件 规则,生成必要的数据信息(如PE文件 规则的PE头格式等)。

4.加载器
为程序的执行做准备:
将可执行文件加载到内存。
加载依赖库或DLL。
对基地址冲突的DLL进行调整(API函数地址的确定)。