编译器-编译阶段性分析

本文详细介绍了编译器的工作过程,包括预处理、语言分析、汇编、优化和代码生成阶段。在预处理阶段,处理#include、宏定义等;语言分析阶段包括词法、语法和语义分析;汇编阶段将高级语言转换为特定CPU指令;优化阶段提高代码效率;最后生成目标文件,等待链接成可执行程序。
摘要由CSDN通过智能技术生成

编译通常分为下面几个阶段完成从文本文件到目标文件的编译-预处理阶段、语言分析阶段、汇编阶段、优化阶段和代码生成阶段。

预处理阶段:

将#include关键字表示的含有定义的文件(包含文件或头文件)包含到源代码中;

将#define语句指定的值转换成代码;

在代码中调用红的位置将宏定义转换成特定部分的代码;

根据#if、#elif和#endif指令的位置包含或排除特定部分代码;
语言分析阶段:

编译i器先将代码转换成更易于处理的形式。通过词法分析,就可以得到这种优化和不必要的空格,以及从文本中提取符号等操作,通过词法分析,就可以得到这二种精简和优化的源代码形式,词法分析的目的在于检查程序是否满足编译语言的语法规则。编译器会在检查到不满足语法规则错误的时候报告错误或发出警告。编译错误会导致编译过程中断,而编译警告则不一定。对于编译警告来说,是否中断编译过程取决于用户的设置。

该阶段可细分为三个不同的阶段:

词法分析:将源代码分割成不可分割的单词。

语法分析:将提取出来的单词连接成单词序列,并根据语言规则验证其顺序是否合理。

语义分析:目的是发现符合于发规则的语句是否具有实际意义。

汇编阶段

当源代码经过校验之后,其中不包含任何错误后,编译其开始执行汇编阶段,在本阶段编译器会为标准的语言集合转换成特定CPU指令集的语言集合。

优化阶段

当由源代码文件生成最初版本的汇编代码之后,优化过程就开始,可以将程序的寄存器使用率最小化。此外,通过分析能够预测出实际不需要换成对应机器指令的二进制值,并写入目标文件的特定位置。

创建的目标文件还不足以让处理器执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值