fanyi chengxu
翻译程序
translator
把一种程序设计语言所写的程序翻译成与之等价的另一种程序设计语言所表示的程序的软件。被翻译的程序称为源程序,书写源程序所用的程序设计语言称为源语言。相应地,翻译程序翻译出的程序称为目标程序(或结果程序),用于构成目标程序所用的语言称为目标语言(或结果语言)。
翻译程序最初是为了解决计算机不能直接执行程序设计语言所描述的程序而研制的。至今,这仍是翻译程序的主要用途。但是,随着计算机应用范围的不断扩大,又相继出现了各种类型的翻译程序,有的用于研制和调试新的软件,有的用于分析、移植和模拟已有的软件。
典型的实现途径 为了使计算机能执行程序设计语言所描述的程序,翻译程序有两种典型的实现途径,一种称为生成性途径,另一种称为解释性途径。生成性途径(图两种典型的实现途径中a)的基本思想,是先由翻译程序把源程序静态地翻译为目标程序(通常是机器语言程序),然后再由计算机执行目标程序,并利用输入数据产生所需的输出结果。这种实现途径划分为两个明显的阶段,前一阶段称为生成阶段,后一阶段称为运行阶段。为了支持目标程序在运行阶段运行,通常要配置各种各样的子程序(如内存动态分配子程序、数组元素地址计算子程序等)。这些子程序的全体称为运行程序。解释性实现途径(图两种典型的实现途径中 b)的基本思想,是按照源程序中语句的动态执行顺序逐句翻译,并立即予以执行。这种实现途径是将源程序的翻译和运行合并成一个解释阶段完成。两种实现途径相比,生成性途径能多遍扫视和加工源程序,翻译出运行效率较高的目标程序,但缺点是灵活性较差,且算法较繁,不易实现;相反,解释性途径易于实现,且能灵活地插入各种调试措施和动态修改源程序的功能,其缺点是重复执行的语句要多次重复翻译,运行效率较差。生成性途径适用于以加工和计算为主、要求高效运行的场合,通常用于实现面向过程的程序设计语言(如FORTRAN、ALGOL、COBOL、PL/1、PASCAL)的翻译程序,一般在成批处理方式下工作。解释性途径适用于以研究、调试和修改程序为主的场合,通常用于实现各种交互会话式语言(如BASIC、APL)的翻译程序。
具体实现翻译程序时,其实现途径可有多种变形:有的只有生成阶段,而无运行阶段;有的要经历多个生成阶段,再转入运行阶段;还有一些是在生成阶段后用解释阶段替代运行阶段。
常用的翻译程序 基于实现途径,翻译程序有生成性和解释性之分。对于生成性翻译程序,如果源语言是某一高级程序设计语言,目标语言是某一计算机(或计算机族)的汇编语言或机器语言,则这种翻译程序特称为编译程序。如果源语言是某一计算机的汇编语言,目标语言是相应计算机的机器语言,则这种翻译程序称为汇编程序。当运行目标程序的计算机内存较小,难以支持翻译程序运行(如单板机),或其程序研制环境较差不易研制系统软件或应用软件(如向量计算机)时,一种较为有效的办法是在一台研制环境较好的计算机上,配置一个能产生目标机的机器语言程序的编译程序或汇编程序。这种在某台计算机上运行,产生另一台计算机的机器语言程序的编译程序或汇编程序,称之为交叉编译程序(或交叉汇编程序)。与编译程序和汇编程序的翻译过程相反,如果源语言是某一计算机的汇编语言或机器语言,而目标语言是某种高级程序设计语言,则这种翻译程序称为相应高级程序设计语言的逆编译程序(或反编译程序)。如果源语言是某一计算机的机器语言,而目标语言是相应计算机的汇编语言,则这种翻译程序称为逆汇编程序(或反 |