编译原理(导论)

作者注:

这是一篇大学生写的编译原理系列,文章并非提供令人望而却步的长篇论述,意在用简单有趣的方式分享我所学到的Knowledge。至于你所感兴趣的深层论述这里提供一些简单的连接供你使用。

这里我要十分感谢我的老师,这篇博文,她无疑是最大的贡献者。

目录

  • 一、什么是编译程序
    • 1.1、简单概括编译器
    • 1.2、编译程序与解释程序
  • 二、编译过程概述
    • 2.1、编译过程的组成
    • 2.2、词法分析
    • 2.3、语法分析
    • 2.4、语义分析与中间代码生成
    • 2.5、代码优化
    • 2.6、目标代码生成
  • 三、编译程序的结构
    • 3.1、
    • 3.2、
  • 四、编译程序的生成
    • 4.1、
    • 4.2、

一、什么是编译程序

1.1、简单概括编译器

问题: 能否简单概括一下编译器是什么?
回答: 所谓的编译器,就是将一种程序(源程序)翻译成另一种程序(目标程序)的计算机程序。编译器天生就是为成为桥梁而来,它将你写的源程序进行翻译成计算机可执行的01代码,然后计算机就可以执行了如下图所示。
在这里插入图片描述

1.2、编译程序与解释程序

既然知道到何为编译器,那么接下来聊一下编译程序与解释程序的区别。
编译程序:先将源程序编译成目标程序,在执行时直接执行目标程序文件,像C语言或C++语言的编译器,编译程序的好处就是一次编译,直接运行,效率高。
解释程序:编译与执行同步执行,不存在中间编译文件,像python语言的编译器,解释程序的有有点就是简单,易实现。
在这里插入图片描述
在这里插入图片描述
那有没有结合两种原理的编译器呢?Java的一次编译到处运行的理念,全靠结合了这两种模式。认真看下面的图你就会感到,原来还可以这样玩!!
在这里插入图片描述

二、编译过程概述

2.1、编译过程的组成

编译一个源程序文件需要对源程序文件进行词法分析,语法分析,语义分析与中间代码生成,代码优化与目标代码生成。
在这里插入图片描述

2.2、词法分析

词法分析是根据构词规则把源程序的字符进行扫描与分解,识别出每个单词与符号。

2.3、语法分析

在词法分析的基础上根据语法规则,将单词符号转化为语法单位(即短语,句子,程序段等),所作的是将单词范畴转化为语法范畴。

2.4、语义分析与中间代码生成

语义分析根据语法规则将语法范畴转换为中间代码,语义分析过程会检查块嵌套是否交叉块嵌套变量名是否相同。

2.5、代码优化

对于中间代码进行加工变换,在时间和空间上提高代码运行效率。例如将复杂度高的乘法改为简单的加法。

2.6、目标代码生成

在硬件体系结构、指令系统的支持下中间代码变换为特定机器上的低级语言代码。目标代码的形式有绝对指令,可重定位指令和汇编指令。

--------------------编译原理目录

作者:德志
在这里插入图片描述
感谢你的关注,希望你能够喜欢我所整理的文章。作者能力有限,如有问题,欢迎在文章底部评论处留下任何问题或者建议。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值