编译和链接

今天跟大家唠一唠编译和链接这个话题。

我们的代码在实现之前会经历几个过程:首先文件传输过来,会先将文件进行翻译,之后再运行出来。在翻译过程中就涉及到了编译和链接。

我们了解编译和链接后,可以方便我们理解计算机代码实现的原理。

在编译过程中又可以细分成 预处理、编译、汇编 的环节。

预处理

1.预处理会将#define删除,并将define宏定义的内容给展开。

2.预处理将处理所有条件指令,例如:#if,#ifdef 等等。

3.预处理会处理#include的指令,并且这个过程是递归进行的,也就是说包含的头文件中也可能包含其他文件。

4.预处理将删除所有的注释。

编译

编译会对文件进行一系列的:词法分析,语法分析,语义分析,生成相应的汇编代码文件。

 

词法分析

词法分析中会分辨出里面包含的用词,举个例子:

语法分析

语法分析会对扫描的记号进行语法分析,从而产生语法树。

还是以这个为例子,语法树将是这样的:


语义分析

由语义分析器来完成语义分析,即对表达式的语法层面分析。

汇编

汇编器是将汇编代码转转变成机器可执行的指令,每⼀个汇编语句几乎都对应⼀条机器指令。

链接

链接的过程很复杂,链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。最后链接后的结果就是可执行程序。

这里浅的谈了一下编译和链接的内容,深入提及也是个很复杂的问题。希望这篇文章能给大家初步了解这个概念,如果有帮助的话不妨给个小红心呗!谢谢啦!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值