码迷,mamicode.com
首页 > 其他好文 > 详细

编译和解释原理

时间:2014-04-30 22:24:38      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:汇编   编译   解释   

语言发展

 

  计算机的硬件只能识别01组成的机器指令,而机器指令是最基本的计算机语言,但是我们平时进行程序设计时肯定不会用机器语言来编程,因为用它的效率低,更让人难以理解。因此聪明的人类发明了汇编语言,它使用符号来表示指令,例如用ADD表示加法,这就容易理解了。但是汇编语言和机器语言十分接近,其书写取决于机器指令,因此它还是一种面向机器的语言,所以称它为低级语言。相应的,又在此基础上,开发出了功能更强、抽象更高的面向各类应用的程序语言,称为高级语言。例如VB,C++,C#,Java等,大家都挺熟悉的。

  但是计算机不能直接理解这些高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成低级语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释

 

编译程序

 

  编译过程,是将所有的源代码指令一次性翻译成目标程序,然后再执行。这个过程如下:

  编译器将高级语言从源代码翻译成与之等价的目标程序(一次性全部翻译完),在随后的某个时刻,用户启动目标程序由操作系统执行。

  mamicode.com,码迷

  编译程序详细过程:

  编译器首先对源程序进行词法,语法,语义的分析,将源程序变成一种内部表达形式,叫做中间代码,中间代码是一种结构简单,表意明确的记号系统,能容易的将他翻译成目标代码。

  目标代码分为两类:汇编语言形式和机器指令形式。

  mamicode.com,码迷

解释程序


  解释过程,就是对于源文件中的每一条指令,都依次翻译成目标指令(这是和编译不同的,解释程序没有目标程序),并且执行的过程。对每条这种执行过程完全由解释器控制的。

  mamicode.com,码迷

  解释程序在词法,语法,语义分析上和编译器的工作原理基本相同,但在运行用户程序时,直接执行源程序或源程序的中间代码程序,中间不会产生目标程序,如下图三种方式(C更接近于机器语言)。

  mamicode.com,码迷

编译和解释的比较


编译:一次编译,多次运行,总体运行较快,效率更高。

平台依赖性。编译好的程序只能在当前平台运行,是个局限性。

解释:解释器实时地解释每一条指令并运行,总体运行比较慢。

平台无关性。任何平台只要装上解释器都可以运行完全相同的代码。

 

发展


  编译和解析相比汇编更加效率,人为理解更加容易,但是编译和解释的优缺点明显,而且还是互补的,有没有更有效率又可移植的编程呢,当然是有的,C#Java,大家都很熟悉。

  它们是如何解释的,简单一句话说明吧:

  JAVA:先转换为中间语言,然后在运行时!解释!

  C#:先转换为中间语言,然后在运行时!编译!,且用到多少就编译多少!

 



编译和解释原理

标签:汇编   编译   解释   

原文地址:http://blog.csdn.net/akkzhjj/article/details/24814233

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!