编译原理绪论

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

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九师兄

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

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

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

打赏作者

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

抵扣说明:

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

余额充值