编译原理-引论-语言处理器

语言处理器:

  翻译器是能够完成一种语言(源语言)到另一种语言(目标语言)变换的软件

       

  翻译器:

    ①编译器:

    • 定义:可以认为一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序。(指将源程序编译为目标可执行程序的系统)          

       

    • 特点:1.任务之一是报告在翻译过程中发现的源程序中的错误。2.与平台有关,目标程序与平台有关。3.运行速度快。

    ②解释器:

    • 定义:不通过翻译的方式生成目标程序。从用户的角度看,解释器直接利用用户提供的输入执行源程序中指定的操作

     

    • 特点:1.错误诊断效果通常比编译器好,因为解释器逐个语句地执行源程序。2.与平台无关。3.运行速度慢。

    (编译器与解释器的区别:解释器不像编译器通过翻译来生成目标程序,而是直接执行源程序所指定的运算。)

    ③混合编译器:

    • 定义:结合了编译和解释过程的语言处理器。源程序首先被编译成一个称为字节码(bytecode)的中间表示。然后有一个虚拟机对得到的字节码加以解释。

                        

    • 特点:1.由虚拟机对字节码(与平台无关)解释执行,可以通过网络进行跨平台。

语言处理系统:

  除了编译器外,创建一个可执行的目标程序还需要一些其他程序。

  • 预处理器:一个源程序可能被分割成为多个模块,并存放于独立的文件中。1.预处理器有时会独立完成把源程序聚合在一起的任务。2.负责把那些称为宏的缩写形式转换为源程序的语句。
  • 编译器:将预处理的源程序转换为目标程序。(可能产生一个汇编语言程序作为其输出,因为汇编语言比较容易输出和调试)
  • 汇编器:对汇编语言程序进行处理,并产生可重定位的机器代码。
  • 链接器:大型程序常被分为多个部分进行编译,因此,可重定位的机器代码有必要和其他可重定位的目标文件以及库文件链接到一起,形成真正在机器上运行的代码。一个文件中的代码可能指向另一个文件中的位置,链接器可以解决外部内存地址的问题。
  • 加载器:把所有的可执行目标文件放到内存中执行。

                                 

Q1:在一个语言处理系统中,编译器产生汇编语言而不是机器语言的好处是什么?

A1:先对于机器语言,汇编语言容易输出和调试,并且汇编语言便于理解,方便优化。

Q2:把一种高级语言翻译成为另一种高级语言店文件的编译器称为源到源(source-to-source)的翻译器。编译器使用C语言作为目标语言有什么好处?

A2:C语言较为普及,各种平台都有对其实现的支持;相对于汇编语言,C语言的抽象更为高级,更容易理解和调试,避免了更多具体的实现;相对其他高级语言,C语言更快。

Q3:描述一下汇编器所要完成的一些任务?

A3:对汇编语言程序进行处理,并产生可重定位的机器代码。

参考-《编译原理(第二版)》,慕课-苏州大学-王中卿老师

猜你喜欢

转载自www.cnblogs.com/fangzhiyou/p/12401500.html