编译器的各阶段

序号 阶段描述
1词法分析将源文件分解为一个个独立的单词符号
2语法分析分析程序的短语结构
3语义动作建立每个短语对应的抽象语法树
4语义分析确定每个短语的含义,建立变量和其声明的关联,检查表达式的类型,翻译每个短语
5栈帧布局按机器要求的方式将变量,函数参数等分配于活跃的记录(即栈帧)内
6翻译生成中间表示树(IR树),这是一种与任何特定程序设计语言和目标机器体系结构无关的表示
7规范化提取表达式中的副作用,整理条件分支,以方便下一阶段的处理
8指令选择将IR树节点组合成与目标机器指令相对应的块
9控制流分析分析指令的顺序并建立控制流程图,此图表示程序执行时可能流经的所用控制流
9数据流分析收集程序变量的数据流信息,例如,活跃分析(liveness analysis)计算每一个变量仍需要使用其值的地点(即他的活跃点)
10寄存器分配为程序中每一个变量和临时数据选择一个寄存器,不在同一个活跃的两个变量可以共享同一个寄存器
11代码流出用机器寄存器替代每一条机器指令中出现的临时变量名

转载于:https://www.cnblogs.com/hulianxingkong/p/10568954.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值