admin 管理员组文章数量: 1184232
2024年12月31日发(作者:php用什么编辑器写)
编译和解释的区别
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进
制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;。
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机
来执行,所以运行速度是不如编译后的程序运行的快的。那编译和解释
有什么区别呢?下面店铺给大家分享一下编译和解释的区别。
一、低级语言与高级语言
最初的计算机程序都是用0和1的序列表示的,程序员直接使用
的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来
为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些
与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。
无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因
为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于
机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指
令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行
在另一种机器上的机器指令的方法,那就是交叉汇编技术。
高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度
大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高
级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器
的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现
的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技
术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种
中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需
要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,
再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不
依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,
而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上
来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移
植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性
大。
二、编译
编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的。
三、解释
解释是对源程序的翻译与执行一次性完成,不生成可存储的目标
代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序
运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的
控制权在用户程序。
四、解释的特性
解释具有良好的动态特性和可移植性,比如在解释执行时可以动
态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊
断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以
在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执
行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本
身也占用了宝贵的系统资源。
五、编译和解释的区别
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进
制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计
算机来执行,所以运行速度是不如编译后的程序运行的快的.
编辑:用编辑软件(或记事本)形成源程序(.ASM),如:
;
汇编:用汇编程序()对源程序进行汇编,形成目标文
件(.OBJ),格式如下:MASM ;
连接:用连接程序()对目标程序进行连接,形成可执行
文件(.EXE),格式如下:LINK ;
执行:如果结果在屏幕在显示,则直接执行可执行文件。
调试:用调试程序()对可执行文件进行调试,格式如
下:DEBUG
1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语
义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实
际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言
的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:
编译型语言和解释型语言。
2. 由编译型语言编写的源程序需要经过编译、汇编和链接才能输
出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机
器指令组成,一般不能独立运行,因为源程序中可能使用了某些汇编
程序不能解释引用的库函数,而库函数代码又不在源程序中,此时还
需要链接程序完成外部引用和目标模块调用的链接任务,最后输出可
执行代码。C、C++、Fortran、Pascal、Ada都是编译实现的。
3. 解释型语言的实现中,翻译器并不产生目标机器代码,而是产
生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代
码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导
致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间
代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐
一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成
目标代码后再执行。对于解释型Basic语言,需要一个专门的解释器解
释执行 Basic程序,每条语言只有在执行才被翻译。这种解释型语言每
执行一次就翻译一次,因而效率低下。
4. Java很特殊,Java程序也需要编译,但是没有直接编译称为机
器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行
字节码。Python 的也采用了类似Java的编译模式,先将Python程
序编译成Python字节码,然后由一个专门的Python字节码解释器负
责解释执行字节码。
编译和解释的区别 编译器是把源程序的每一条语句都编译成机器
语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运
行此程序,速度很快;。而解释器则是只在执行程序时,才一条一条的解释
成机器语言给计算机来执行,所以运行速度是不如编译后的程 推荐度:
点击下载文档文档为doc格式
版权声明:本文标题:编译和解释的区别 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735746306a1687879.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论