中间代码生成及编译器后端概述
字数
558 字
阅读时间
3 分钟
常用的中间表示形式
- 三地址码(Three-address Code)
- 定义:三地址码由类似于汇编语言的指令序列组成,每个指令最多有三个操作数(operand)
- 语法结构树/语法树(Syntax Trees)
- 注意区分:语法树与语法分析树
常用的三地址指令
- 图示:
- 红色部分表示的是指令的操作符
- 其中的x,y,z表示运算分量及运算结果存放的地址,过程调用中的p表示的是过程的名字,n表示的是过程的参数数量
- 其中的数组,表示的是数组的相对地址及偏移地址([ ]内的是偏移地址)
- 地址可以具有如下形式之一:
- 源程序中的名字(name)
- 常量(constant)
- 编译器生成的临时变量(temporary)
三地址指令的表示
- 有以下几种表现形式:
- 四元式
- 表现如下:(op,arg1,arg2,result)
- 例图示:
- 三地址指令序列唯一确定了运算完成的顺序
- 三元式
- 间接三元式
- 四元式
中间代码生成的例子
- 图示:
- 例如:中间代码生成的第一句:
- 100号指令:(
, , ,102) 假如 ,那么就跳转到102号指令并执行
- 100号指令:(
- 例如:中间代码生成的第一句:
编译器的结构
什么是目标代码生成?
- 目标代码生成就是以源程序的中间表示形式作为输入,并把它映射到目标语言的过程
目标代码生成的主要任务
- 目标代码生成的一个重要任务就是为程序中使用的变量合理分配寄存器
什么是代码优化?
- 代码优化就是为改进代码所进行的等价程序变换,使其运行得更快些、占用空间更少些,或两者兼具
贡献者
freeway348