当前位置:首页 » 编程软件 » 编译程序架构

编译程序架构

发布时间: 2024-02-05 07:28:33

① 一个典型的编译程序通常由哪些部分组成

1、词法分析

词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。

2、语法分析

编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。

3、中间代码生成

中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。

4、代码优化

代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。

5、目标代码生成

目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。

(1)编译程序架构扩展阅读:

编译程序把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。

编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

编译程序的实现算法较为复杂。这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系;同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。

但是,由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。

热点内容
cmake编译zlib出错 发布:2024-11-16 08:26:32 浏览:441
realmegt大师探索版买哪个配置 发布:2024-11-16 08:25:49 浏览:150
手机安卓线是什么 发布:2024-11-16 08:25:40 浏览:351
绝地求生怎么开一个服务器 发布:2024-11-16 08:21:11 浏览:757
安卓系统转转竞拍在哪里进入 发布:2024-11-16 08:20:37 浏览:851
用python求和 发布:2024-11-16 08:07:07 浏览:8
忘记密码如何登录国家反诈中心 发布:2024-11-16 07:51:55 浏览:96
编程图片平移 发布:2024-11-16 07:41:06 浏览:653
黄金数算法 发布:2024-11-16 07:40:15 浏览:66
门锁动态密码是什么样的 发布:2024-11-16 07:39:33 浏览:913