翻译程序的定义
将一种语言描述的程序翻译成等价的用另一种语言描述的程序的程序,称为翻译程序。(用高级语言(Java,C等)和汇编语言(mov,sub等)描述的程序,是不能被计算机直接执行的,还需要被翻译系统翻译成机器语言程序才能执行)
翻译程序的种类及其功能
翻译程序被分为两大类:
1.接受源程序,输出与之等价的目标程序,然后对其进行相应处理后投入运行。这种翻译程序被称为编译程序(compiler)。
2.不断读取源程序中的语句,对每次读到的语句进行解释,同时读取执行此语句所需要的数据。执行该语句,再根据执行结果读取下一条将要执行的语句,再次进行解释和执行,并且解释执行的过程中还会根据程序的规定在需要的时候输出计算结果。重复以上过程,直到程序执行结束。这种翻译程序被称为解释程序(interpreter)。
其实区别就是编译程序在程序执行前就完成了所有的翻译工作,而解释程序是在需要执行某条语句的时候才对其进行解释。
虽然编译程序可以将源程序翻译成汇编语言程序或机器语言程序。但我们要求其编译出来的目标程序必须是可重定位的,以适应并发和动态管理的要求。有些目标程序还需要连接装配,构成可执行程序,并在恰当的支持下运行。所以编译程序和相应的运行系统一起构成了编译系统。
除了编译程序和解释程序这两大类以外,还有如下一些翻译程序:
汇编程序(assembler):当源程序是汇编语言程序时,目标程序是机器语言时,翻译程序被称为汇编程序。
交叉汇编程序(cross assembler):当源程序是汇编语言程序时,目标程序是另一台机器的机器语言时,翻译程序被称为交叉汇编程序。
反汇编程序(disassembler):当源程序是机器语言时,目标程序汇编语言程序时,翻译程序被称为反汇编程序。
交叉编译程序(cross compiler):当源程序是高级语言程序,目标程序是另一台机器的机器语言程序或汇编语言程序时,翻译程序被称为交叉编译程序。
反编译程序(decompiler):当源程序是机器语言程序,目标程序是高级语言程序时,翻译程序被称为反编译程序。
可变目标编译程序(retargetable compiler):当源程序是高级语言程序,目标程序是可选的机型的机器语言程序或汇编语言程序时,翻译程序被称为可变目标编译程序。
并行编译程序(parallelizing compiler):当源程序是串行执行的高级语言程序,目标程序是并行执行的机器语言程序或者汇编语言程序时,翻译程序称为并行编译程序。
诊断程序编译程序(diagnostic compiler):强调查错,纠错能力,帮助人们开发和调试程序的编译程序。
优化编译程序(optimizing compiler):强调提高目标代码效率的编译程序。