能将高级语言转换成目标程序的是

离岸账户2022-09-28  7

能将高级语言转换成目标程序的是

能把高级语言转换成目标程序的是

能够把高级语言转换成目标程序的是编译器。用高级语言编写的程序称为“源程序”,用二进制代码表示的程序称为“目标程序”,而将源程序转换成机器可识别的目标程序是由“编译程序”来完成的。编译器是先把整个用高级语言编写的源程序翻译成机器语言程序,然后生成可以直接在操作系统下运行的目标程序。

编译器(编译程序),又称编译程序,是指把用高级编程语言编写的源程序翻译成等价的机器语言格式目标程序的翻译程序。编译器属于翻译程序,通过生成实现的方式实现。它以高级编程语言编写的源程序为输入,以汇编语言或机器语言表达的目标程序为输出。编译后的目标程序通常要经过运行阶段,才能在运行程序的支持下运行,处理初始数据,计算出所需的计算结果。

编译器作为编程的重要软件工具,已经被纳入软件支撑环境的基本软件工具。因此,在规划编译器实现方案时,要从具体的软件支撑环境出发,既要遵循整个环境的总体要求和规定,又要仔细考虑与其他各层软件工具的相互支持、协作和连接关系。

编译器将源程序翻译成目标程序,分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。它主要进行词法分析和语法分析,也称为源程序分析。在分析的过程中发现语法错误并给出提示信息。

1.词法分析。词法分析的任务是对字符组成的单词进行处理,从左到右逐字符扫描源程序,并逐个生成单词符号,将作为字符串的源程序转换成单词符号串的中间程序。执行词法分析的程序被称为词法分析器或扫描器。

源程序中的单词符号被扫描器分析,一般产生二进制形式:单词类型;这个词本身的价值。单词通常用整数编码。如果一个类别只包含一个单词符号,那么类别代码完全代表这个单词符号自己的值。如果一个类别包含许多单词符号,那么对于每个单词符号,除了类别代码之外,还应该给出自己的值。一般来说,词法分析器的构造有两种方法:手工构造和自动生成。利用状态图可以进行手工构造,利用确定的有限自动机可以实现自动生成。

2.语法分析。编译程序的语法分析器以单词符号为输入,分析单词符号串是否构成符合语法规则的语法单位,如表达式、赋值、循环等。,最后看它们是否形成符合要求的程序。它根据语言中使用的语法规则,分析检查每个句子是否具有正确的逻辑结构,程序是最终的语法单位。编译程序的语法规则可以用上下文无关语法来描述。

语法分析有两种方法:自上而下的分析和自下而上的分析。自上而下,我们从语法的开头符号开始,向下推导、演绎句子。自下而上的分析方法采用移入和减少的方法。基本思想是:将一个注册的符号前移,然后从栈中释放,将输入的符号一个一个移入栈中。当栈顶形成一个乘积的候选时,栈顶的这部分被减少到乘积的左邻符号。

3.中间代码生成。中间代码是源程序或中间语言的内部表示。中间代码的作用是使编译器的结构更简单,逻辑更清晰,尤其是使目标代码的优化更容易实现。中间代码就是中间语言程序,中间语言的复杂度介于源语言和机器语言之间。中间语言有多种形式,如反波兰马克、四元、三元、树。

4.代码优化。代码优化是指对程序进行等价转换,使转换后的程序生成更有效的目标代码。等价意味着不改变程序的运行结果。所谓有效,主要是指目标代码运行时间短,占用内存空小。这种转换称为优化。

优化有两种:一种是对解析后的中间代码进行优化,不依赖于具体的计算机;另一个是生成目标代码的时间,这很大程度上取决于具体的计算机。对于前一类优化,根据其程序范围可分为三个不同的层次:局部优化、循环优化和全局优化。

5.目标代码生成。目标代码生成是编译的最后阶段。目标代码生成器将语法分析或优化后的中间代码转换成目标代码。代码有三种形式:可以立即执行的机器语言代码,所有地址都是重定位的;当需要执行待组装的机器语言模块时,连接加载器将其与一些正在运行的程序连接起来,并转换成可执行的机器语言代码;汇编语言代码必须由汇编程序编译成可执行的机器语言代码。

在目标代码生成阶段,要考虑三个直接影响目标代码速度的问题:一是如何生成更短的目标代码;第二,如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;第三,如何充分利用计算机指令系统的特点来提高目标代码的质量。

转载请注明原文地址:https://juke.outofmemory.cn/read/1825105.html

最新回复(0)