高级语言的实现
编译方式 : 源语言为高级语言,目标语言为低级语言(汇编或机器语言)的翻译程序。
解释方式 : 一边翻译一边执行,翻译完的同时也执行完程序。
两者的区别 :
编译方式(转换) | 解释方式(执行) | |
---|---|---|
对源程序的处理顺序 | 先翻译后执行 | 动态顺序逐句地进行分析解释,并立即执行 |
是否生成目标代码 | 生成目标代码 | 不生成目标代码 |
是否进行翻译 | 翻译并生成目标代码 | 对源程序进行翻译,只不过是边翻译边执行,不生成目标程序 |
执行速度 | 速度快 | 速度慢 |
空间开销 | 空间开销相对小 | 空间开销相对大 |
人机交互 | 相对不利于 | 有利于人机交互 |
动态修改自身 | 不可以 | 可以 |
转换方式 : 是一种变通的方式,假如已有B语言的编译器,就可以把A语言程序转换为B语言程序,用B语言已有的编译器去编译执行
编译程序的组成
词法分析 : 识别由字符组成的高级语言程序中的单词,并将其转化成一种内部表示的形式,同时检查是否存在语法错误
语法分析 : 根据语言定义的语法规则来验证程序中是否存在语法错误
语义分析 : 检查源程序有无语义错误,为代码生成阶段收集类型信息
中间代码生成 : 将源程序转换成一种称为中间代码的内部表示形式,便于优化和移植
中间代码优化 : 变换或改造中间代码,使生成的目标代码更为高效,即节省时间和空间。和程序的算法无关,更多针对于程序具体运行时的内部优化,尤其针对有特殊要求的编译器
目标代码生成 : 将中间代码变换为特定机器上的机器指令代码或汇编指令代码
错误处理
表格管理
编译程序的分遍
标签:翻译,语言,绪论,代码,生成,执行,源程序 From: https://www.cnblogs.com/wuqiu/p/16784158.html