编译原理

您所在的位置:网站首页 什么是编译器和解释器他们之间的区别是什么 编译原理

编译原理

2024-07-16 18:42| 来源: 网络整理| 查看: 265

在初步学习编译原理时,遇到了一些不能很直观理解的概念,以下是我结合书本和网上学习的一些见解。

编译器:在一个程序可以运行之前,它首先需要被翻译成一种能够被计算机执行的形式,简单地说,一个编译器就是一个程序,他可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行。重要任务之一是报告它在翻译过程中发现的源程序中的错误。

 

解释器:解释器是一条一条的解释执行源语言,直接利用用户提供的输入执行源程序中指定的操作。比如php,javascript就是典型的解释性语言。

 

混合编译器:Java语言处理器结合了编译和解释过程,一个Java源程序首先被编译成一个成为字节码的中间表示方式。然后由一个虚拟机对得到的字节码加以解释运行。这样的好处具有可迁移性,即在一台机器上编译得到的字节码可以在另一台机器上解释执行。

 

即时编译器:为了更快地完成输入到输出的处理,这种被称为即时编译器的Java编译器在运行中间程序处理输入的前一刻首先把字节码翻译成为机器语言,然后再执行程序。

 

动态编译器:按需编译,程序在运行的过程中,用到哪一个模块就编译哪一个模块。

 

交叉编译器:在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码。

 

预处理器:把源程序聚合在一起的任务有时会由预处理器的程序独立完成,它还负责把那些成为宏的缩写形式转换为源语言的语句。

 

链接器:因为一个文件中的代码可能指向另一个文件的位置,而链接器就能够解决外部内存地址的问题。

 

加载器:能把所有的可执行目标文件放到内存中执行。

 

1.编译器和解释器之间的区别是什么?他们两者之间的优缺点。 解释器是解释执行的源代码,编译器是将源代码编译成目标代码,它们最大的区别是程序运行时需要解释器边解释边执行,而编译器则在运行时是完全不需要的。优缺点:解释器比较容易让用户实现自己跨平台的代码,且解释器的错误诊断效果通常比编译器更好,因为它逐个语句地执行源程序;  而在把用户输入映射成输出的过程中,由一个编译器产生的机器语言目标程序通常比一个解释器快很多。

 

2.在一个语言处理系统中,编译器产生汇编语言而不是机器语言的好处是什么? 因为汇编语言比较容易调试和输出,这样就减轻了编译器设计的工作量,将部分工作转到汇编器上。

 

3.把一种高级语言翻译成为另一种高级语言的编译器称为源到源的翻译器。编译器使用C语言作为目标语言有什么好处? 就好比为什么编译器要产生汇编语言而是不是机器语言一样,C语言更简单更常用更加容易理解,同样方便调试和输出。

 

4.描述一下汇编器所要完成的一些任务。 汇编器就类似与编译器,只是它的源语言不是高级语言而是汇编语言。同样,它需要一个预处理器进行预处理,如聚合文件,展开宏等。写成的机器语言也要类似与连接器和加载器的程序,完成类似的工作。  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3