1、编译原理

高级语言翻译为机器语言

翻译有两种方式:
【1】编译方式
将高级语言翻译为汇编或者机器语言(称为目标程序),然后在执行它这个翻译过程叫做翻译程序,如果目标程序是汇编语言,那么还需要由另外一个称为汇编程序的翻译程序将他进一步翻译为机器语言程序
这里写图片描述
【2】解释方式
解释方式并不参数目标程序然后执行,而是对源程序边翻译边执行
这里写图片描述
编译程序主要功能是将源程序翻译为等价的目标程序,这个翻译过程十分复杂,一般可分为:
(1)词法分析
(2)语法分析
(3)语义分析
(4)中间代码生成
(5)代码优化和目标代码生成等阶段

1、词法分析
词法分析是编译过程的基础,其任务是扫描源程序,根据语言的词法规则,分析和识别出每个单词并把翻译成相应的机内表示,词法分析在识别单词的过程中也同时做了词法检查

单词是语言最小的语义单位

关键字(保留字或基本字)
标识符
常数
运算符
界限符。
这里写图片描述

2、语法分析
语法分析是在词法分析基础上进行的
语法分析的任务:根据语言的语法规则,把单词符号串分解为各类语法单位 如:
表达式
语句
通过语法分析,可以确定整个输入符号串是否构成一个语法正确的程序,上面可分解为n<=100,赋值语句sum:=0,等等,对含有语法错误的程序,要进行相应的错误处理,如 显示出戳性质,出错部位等,以便程序员修改。

3、语义分析
语义分析的任务是对源程序进行语义检查,其目的是保证标识符和常数的正确使用,把必要的信息收集,保存到符号表或中间代码程序中,并且进行相应处理
x:=e;
需要检查表达式e与变量x的类型是否一致,如果不一致,编译程序将报错
4、中间代码生成
中间代码生成对编译程序来说并不是必不可少的阶段,编译程序采用中间代码,并随后对中间代码优化,其目的是为了最终能得到高效率的目标代码

中间代码生成阶段的任务是在语法分析和语义分析的基础上,根据语法成分的语义对其进行翻译,这种翻译的结果即某种中间代码形式。这种中间代码结构简单,接近与计算机的指令形式,或者能很容易的翻译为计算机指令,常见的中间代码由三元式,四元式,和逆波兰式,其中三元式接近与二地址指令,四元式接近与三地址指令

5、中间代码优化
中间代码优化通过调整和改变中代码的某些操作次序,以最终产生更加高效的目标代码(目标源程序),中间代码优化也不是编译程序的必要阶段

6、目标代码生成
目标代码生成是编译程序的最后阶段,如果编译程序采用的中间代码,那么目标代码生成阶段的任务则是将中间代码或者优化过的中间代码转换为等价的目标代码,既机器指令或汇编指令
目标代码依赖于具体计算机的硬件系统

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值