编译与解释
来源:互联网 发布:小米2s怎么能用3g网络 编辑:程序博客网 时间:2024/05/13 21:15
编译过程概述
词法分析——对源程序从左至右逐个字符地扫描,从中识别出一个个单词符号。
例子:正规式与自动机
语法分析——在词法分析的基础上,根据语言的语法规则将单词序列分解成各类语法单位,如“表达式”、“语句”、“程序”等。
例子:0型文法、上下文有关文法、上下文无关文法。
语义分析——进行类型分析和检查。程序语言中一个数据类型一般包括两方面内容:类型的载体及其上的运算。例如:整除取余运算符只能对整形数据进行运算,若其运算对象中有浮点数就认为是类型不匹配的错误。
中间代码生成——根据语义分析的输出生成的中间代码。中间代码是一种简单且含义明确的记号系统,可以有若干种形式,他们的共同特征是与具体的机器无关。
语义分析与中间代码生成所依据的是语义规则。
代码优化——优化过程可以在中间代码生成阶段进行,也可以在目标代码生成阶段进行。优化所依据的原则是程序的等价变换规则。
目标代码生成——把中间代码转换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,目标代码生成工作与具体的及其密切相关。
1、编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中中间代码生成和代码优化并不是每种编译器都必需的。
2、高级语言源程序的编译过程分为若干个阶段,分配寄存器属于代码生成阶段的工作
3、编译程序对C语言源程序进行语法分析时,可以确定变量是否定义或声明。
解释程序基本原理
解释程序在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的中间表示形式。
解释程序不产生源程序的目标程序,这是它与编译程序的主要区别。
编译与解释的区别:
·效率:编译比解释方式可能取得更高的效率。解释方式在运行时可能需要反复扫描源程序;编译方式创建目标程序运行的时间比解释时间长,但编译一次就可以多次运行。
·灵活性:解释程序需要反复检查源程序,所以它比编译方式更加灵活。
·可移植性:解释器一般用某种程序设计语言编写的,因此只要对解释器进行重新编译,就可以使解释器运行在不同的环境中。
- 编译与解释
- 编译与解释
- 编译与解释
- 编译与解释
- 解释与编译
- 编译与解释
- 解释与编译
- 编译与解释
- 解释与编译
- 解释与编译
- 编译、解释与JIT
- 编译与解释
- 编译与解释
- 解释与编译
- 解释与编译的区别
- 解释执行与编译执行
- 编译与解释的区别
- 瞎侃解释与编译
- 基于mjpg-streamer-r63的源码分析之:基础知识详细解释[一]
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(XMPP服务器架构)
- MFC中ListControl控件的使用
- 基于mjpg-streamer-r63的源码分析之:基础知识详细解释[二]
- Jqgrid在C#下的应用,使用LINQ查询结果集
- 编译与解释
- .NET生成随机数方法
- 获取 Android 设备的唯一标识码
- ApplicationContext
- Android <meta-data>
- 面向对象(一)之封装
- cocos2d-x学习笔记-纹理优化
- MFC 中Edit Box 不响应回车键 和删除键
- Solr多核配置