编译原理第二天

优化

任务:对前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码

原则:程序的等价变换原则

编译过程

任务:把中间代码变换成特定机器上的目标代码

依赖于硬件系统结构和机器指令的含义

目标代码三种形式:

汇编指令代码:需要进行汇编

绝对指令代码:可直接运行

可重新定位指令代码:需要链接

编译结构

词法分析器 单词符号

语法分析器 语法单位

语义分析与中间代码生成器 中间代码

优化段 中间代码

目标代码生成器

另外:符号表管理,出错处理模块

出错处理

出错处理程序: 发现错误,报告给用户

语法错误: 缺少括号等

语义错误:类型不一致等

对源程序或源程序的中间表示从头到尾扫描一次

阶段与遍是不同的概念:

一遍可以有若干段组成

一个阶段也可以分若干遍来完成

编译前端与后端

编译前端:如词法分析 语法分析 语义分析与中间代码产生,与机器无关的优化

编译后端:与目标机有关,与目标机有关的优化,目标代码产生。

带来的好处:

程序逻辑结构清晰

有利于移植

编译程序生成

以机器语言和汇编语言为工具

  优点:效率高

  缺点: 难写

高级语言书写

程序易读 

利用已有的某种语言的编译程序使用另一种语言的编译程序

移植方法

把一种机器上的编译程序移植到另一种机器上

自编译方式

编译程序自动生成

编译程序产生器

lex: 词法分析程序产生器

yacc: 语法分析程序产生器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值