编译原理——语言处理程序
概况
程序语言是为了书写计算机程序而人为设计的符号,用于对计算过程进行描写叙述、组织和推导,程序语言分为低级语言和高级语言,低级语言包含计算机硬件能识别的由0、1组成的机器指令语言和用符号组成的指令语言汇编集合的汇编语言,高级语言是人们开发的功能更强、抽象级别更高的语言以支持程序设计,面向各类应用的程序语言。
因为计算机仅仅能理解由0、1序列构成的机器语言。因此高级程序语言须要翻译,即将高级语言或汇编语言编写的程序翻译成某种机器语言好曾向,担负这一任务的程序称为“语言处理程序”。语言处理程序的基本方式为汇编、解释和编译。
汇编程序
用符号表示的指令称为汇编指令,汇编指令集合称为汇编语言。
汇编语言由指令语言、伪指令语句和宏指令语句构成。指令语句又称为机器指令语言。将指令语言汇编后能产生对应的机器代码。伪指令语句,是指示汇编源程序时完毕某些工作,通俗的说是写给“汇编软件”看的。不翻译成机器码。宏指令语句。多次反复使用的程序段叫宏,须要使用这段程序时。仅仅要使用宏名即能够。这样宏的引用就是宏指令语句。
汇编语言编写的程序为汇编语言程序,汇编语言程序将汇编语言所编写的源程序翻译成机器指令程序。
该工作包含两部分,一是将汇编语言转换成机器指令,还有一部分处理源程序中的伪指令。该工作是实现途径是通过两次扫描源程序。
编译程序
编译程序是把某种高级语言书写的源程序翻译成目标语言程序。
编译程序工作分为六个阶段,各自是此法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成这六个阶段,可是在实际的编译器中可能会将当中的某些阶段结合在一起进行处理。
在逻辑上将这六个阶段分为前段和后端,前段从词法分析到中间代码生成4个阶段,后端包含代码优化和目标代码生成这两个阶段,前段和后端把编译器分成了与机器无关编程语言有关和机器有关编程语言无关两部分。
解释程序
解释程序能够直接将源程序解释运行。也能够将源程序翻译成某种中间代码形式。然后对中间代码进行解释来运行。
解释程序的词法、语法和语义与编译程序基本同样,只是不同的是解释程序不产生目标程序,执行时候须要源程序和解释程序參与。
编译与解释比較
编译方式下。机器上仅仅执行目标程序,源程序和编译程序不參与目标程序执行。解释方式下。源程序和解释程序要參与到程序执行过程中。执行程序的控制权在解释程序。
编译较解释效率高,解释方式下执行程序,须要重复多次扫描源程序,而且须要很多其它的内存。
编译方式进行目标代码生成并优化在时间和空间上都比解释程序耗费多,可是编译程序的最大的优势是一次编译完毕多次执行。所以总体效率比解释高。