编译原理

您所在的位置:网站首页 编译过程的五个阶段分别是什么意思 编译原理

编译原理

2024-07-02 19:34| 来源: 网络整理| 查看: 265

在这里插入图片描述

1. 何为编译?

编译这个词相信你一定听到过很多次,那么编译是什么意思呢?这要从代码的执行过程说起。 以C语言为例,从源代码到目标可执行程序,要经历以下4个阶段: 在这里插入图片描述 此处编译器完成编译的作用,将高级语言变化为目标的机器语言/汇编语言。 此处的编译器就像一个翻译软件,将一种语言按照规则翻译为另一种语言。 那么编译器是怎么完成这个复杂的翻译过程的呢?请看下面的内容。

2. 编译程序的组成

编译程序其实可以分为两种,一种是单遍(pass)编译程序,一种是多遍编译程序。顾名思义,单遍编译程序就是只对源代码读取一遍,便可得到目标代码;而多遍编译程序则需要读取多遍,才能完成转化过程。

这样的话,既然一遍就可以得到目标代码,那为啥还要处理多遍呢?

别急,先让我们了解一下编译程序是由什么组成的。

2.1 编译过程

编译的过程包括如下几个部分:

词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成

看到这些乱七八糟的是不是很懵!没关系,咱们一个一个来理解一下。

词法分析:识别出最小的语法单位,并表示其词性。(源程序字符串 → 单词符号)语法分析:根据单词词性分析语法。(单词符号 → 语法单位)语义分析与中间代码生成:根据单词值分析语义是否正确,生成中间代码。(语法单位 → 中间代码)代码优化:对中间代码进行优化,以期产生更高效的目标代码。(中间代码 → 优化后的中间代码)目标代码生成:将中间代码转换成低级语言代码。(中间代码 → 目标代码)

其实这个过程就像是我们在翻译英语文章的步骤,先分析每个单词的词性,再分析每个句子的语法,之后根据单词的意思套入语法,得到句子的翻译,但是句子的翻译要经过优化才能得到最终符合中文习惯的结果。

2.2 单遍编译程序

在这里插入图片描述 如图所示,单遍编译程序跳过了词法分析步骤,直接从语法分析开始,在需要用到单词的时候,才从词法分析取得单词,之后进行语义分析生成代码。与编译的程序相比,缺少优化代码的步骤。

2.3 多遍编译程序

在这里插入图片描述 如图所示,多遍编译程序按照步骤对程序进行编译,进行4遍操作,与单遍编译程序相比,多了局部优化、全局优化的步骤。

2.4 单遍与多遍区别

既然单遍就能完成的工作,为什么要进行多遍呢?

多遍遍历有如下有点:

可将编译分为编译阶段和执行阶段,使得编译程序具有可移植性。多遍编译可以使得程序充分优化,产生高质量的代码可以减少对内存的需求。

什么是可移植性呢? 在这里插入图片描述 多个前端与多个后端组合,起到不同的编译功能,就是可移植性。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3