编译原理绪论

1.美图

在这里插入图片描述

5. 编译过程一语法分析

任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位(语法范畴)
依循的原则:语法规则
描述工具:上下文无关文法
在这里插入图片描述

6.编译过程一中间代码产生

任务:对各类不同语法范畴按语言的语义进行初步翻译
依循的原则:语义规则
中间代码:三元式,四元式,树,*…
在这里插入图片描述

7.编译过程一优化爱课程

任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码
依循的原则:程序的等价变换规则

FOR K;=1 TO 100 DO
BEGIN
	X:=I+1;
	M;=I+10*K;
	N;=J+ 10*K;
END

翻译成四元式
在这里插入图片描述
在这里插入图片描述

这里注意乘法的代价比加法要大太多

8.编译过程一目标代码产生

任务:把中间代码变换成特定机器上的目标代码
依赖于硬件系统结构和机器指令的含义
目标代码三种形式

  1. 绝对指令代码:可直接运行 如exe程序
  2. 可重新定位指令代码:需要连接装配,如vb中的obj文件,支持独立的模块化文件
  3. 汇编指令代码:需要进行汇编

8.1 可重新定位指令代码

支持独立的模块化文件,因为独立编译,所以不知道将来会怎么使用内存,各种模块组合形成不同的程序。
在这里插入图片描述
每个模块地址之间使用相对地址。

9.编译程序的结构

  1. 编译程序总框
  2. 表格与表格管理
  3. 出错处理
  4. 编译前端与后端

在这里插入图片描述

9.1 表格和表格管理

常见的表格
符号名表,常数表,标号表,入口名表,过程引用表…
格式

名字 | 信息

出错处理程序
口发现源程序中的错误,把有关错误信息报告给用户
语法错误

  1. 源程序中不符合语法(或词法)规则的错误
  2. 非法字符、括号不匹配、缺少;
    语义错误
  3. 源程序中不符合语义规则的错误
  4. 说明错误、作用域错误、类型不一致.

9.2 遍(pass)

所谓"遍",就是对源程序或源程序的中间表示从头到尾扫描一次

9.3 编译前端与编译后端

xc
编译前端

  1. 与源语言有关,如词法分析,语法分析,语义分析与
  2. 中间代码产生,与机器无关的优化
    编译后端
  3. 与目标机有关,与目标机有关的优化,目标代码产生

9.4 案例java

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值