1. 基本概念
- 汇编指令:用符号表示的指令
- 汇编语言:汇编指令的集合
- 汇编语言程序:由汇编语言编写的指令序列
1.1 翻译程序的三种方式
- 转换:高级语言之间的翻译一般称为转换,如FORTRAN到Ada的转换等;或者被称为预处理,如SQL到C/C++的预处理等。
- 编译:高级语言可以直接翻译成机器语言,也可以翻译成汇编语言,这两个翻译过程被称为编译;
- 交叉汇编:将一个汇编语言程序汇编为另一个机器上运行的机器指令;
- 交叉编译:建立在交叉汇编的基础上的编译模式,如首先将L2编译成A2,再将A2汇编成M1
- 反汇编:把机器语言翻译成汇编语言
- 反编译:把汇编语言翻译成高级语言
约定: - 源程序是指通用程序设计语言
- 目标程序是指汇编语言程序
-
编译:将高级语言编写的源程序翻译成等价的机器语言或汇编语言。
编译器的工作方式:
-
解释:将高级语言编写的源程序翻译一句执行一句,不生成目标文件,直接执行源代码文件。
解释器的工作方式:
-
汇编:用汇编语言编写的源程序翻译成与之等价的机器语言。
解释器与编译器的主要区别在于:运行目标程序时的控制权在解释器而不在目标程序。
- 解释器的优缺点:
- 优点:
- 具有较好的动态特性
- 具有较好的可移植性
- 缺点:
- 解释器再运行时间和空间上的损失较大,运行效率低
1.2 编译程序的五个阶段
- 词法分析:对源程序的字符串进行扫描和分解,识别出每个单词符号。
- 语法分析:根据语言的语法规则,把单词符号分解
成各类语法单位。 - 语义分析与中间代码生成:对各种语法范畴进行静态语义检查,若正确则进行中间代码翻译。
- 代码优化:遵循程序的等价变换规则。
- 目标代码生成:将中间代码变换成特定机器上的低级语言代码。
2. 词法分析
2.1 基本定义
- 关键字(保留字):这类单词在程序设计语言中有固定的意义,如begin、end、while等。若在程序设计语言中不允许用它们再表示其他的意思,则这类单词也被称为保留字。
- 标识符:标识符是程序设计语言中最大的一个类别,它的作用是为某个实体起一个名字,以便于今后称呼(引用)。
- 字面量:字面量是指直接以其字面所表示的常量。可以被细分为数字字面量和字符串字面量等。
- 特殊符号:程序设计语言中的特殊符号,类似于自然语言中的标点符号,每个符号在程序设计语言中均有特殊用途。
- 模式(patten):产生和识别单词的规则
- 记号(token):按照某个模式(规则)识别出的元素
- 单词(lexeme):是指被识别出元素自身的值。
- 记号的属性:分为记号类别和记号的其他信息。
2.2 词法分析器
词法分析器的主要任务是读入源程序的输入字符,将它们组成词素,生成并输出一个词法单元序列,这个词法单元序列被输出到语法分析器进行语法分析。另外,由于词法分析器在编译器中负责读取源程序,因此除了识别词素之外,它还会完成一些其他任务,比如过滤掉源程序中的注释和空白,将编译器生成的错误消息与源程序的位置关联起来等。总而言之,词法分析器的作用如下:
- 读入源程序的输入字符,将它们组成词素,生成并输出一个词法单元序列;
- 过滤掉源程序中的注释和空白;
- 将编译器生成的错误消息与源程序的位置关联起来;
- 其它。
与语法分析器并行工作的模式
2.3 模式的形式化描述
2.3.1 术语
- 有限字母表 ∑:如Σ = {a, b}
- 语言L:语言 L 是有限字母表 ∑ 上有限长度字符串的集合。如L(ε)= {ε}
- 正规式:用来表示模式,如r = (a|b)*(a|bb)
- 正规集:用正规式描述的语言,即正规式描述的字符串集合。如L®
2.3.2 正规式
令Σ是一个有限字母表,则Σ上的正规式及其表示的集合递归定义如下:
- ε是正规式,它表示集合L(ε)={ε}
- 若a是Σ上的字符,则a是正规式,它表示集合L(a)={a}
- 若正规式r和s分别表示集合L®和L(s),则
(a)或: r|s是正规式,表示集合L®∪L(s),
(b)连接:rs是正规式,表示集合L®L(s),
(c)(星)闭包:r是正规式,表示集合(L®)
(d)®是正规式,表示的集合仍然是L®。(加括弧改变优先级、结合性)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」