【学习笔记】编译原理 第一章 概论

以下为参考课件与《编译技术》(张莉等著)的个人整理,若有错误欢迎指出

第一章 编译概论

一、基本概念

1、源程序:用汇编语言或高级语言编写的程序称为源程序

2、目标程序:用目标语言所表示的程序

  • 目标语言: 可以是介于源语言和机器语言之间的“ 中间语言” , 可以是某种机器的机器语言,也可以是某机器的汇编语言。

3、翻译程序:将源程序语义等价转换为目标程序的程序 ,包括汇编程序、编译程序等

请添加图片描述
汇编程序:源程序是汇编语言, 翻译后是机器语言

编译程序:源程序是高级语言,翻译后是目标程序

4、解释程序:对源程序进行解释执行的程序。

可对高级语言、中间语言解释执行

与纯编译的相比,

优点:动态确定易修改;方便调试;存储量小

缺点:执行效率低(每次都得重新翻译)

请添加图片描述

5、编译-解释执行系统(如java)
请添加图片描述

二、编译过程

1、编译过程:指将高级语言程序翻译为等价的目标程序的过程

2、基本阶段
请添加图片描述
五个逻辑阶段:

(1)词法分析

分析和识别单词

一般语言有保留字、标识符、常量、连接符(分界符和运算符)四类单词。

(2)语法分析

根据语法规则(文法)分析出各种语法成分(如表达式、各种说明等),并检查语法正确性

(3)语义分析、生成中间代码

对识别出的各种语法成分进行语义分析,并产生相应的中间代码。 【语义的等价翻译】

中间代码是介于源语言和目标语言之间,可由编译程序设计者设计。如四元式(运算符、左对象、右对象、结果)等

目的:便于做优化和编译程序的移植

(4)代码优化

更高效的目标程序,即保持功能不变,尽可能简短,减少存储和运行时间

(5)生成目标程序

中间代码生成目标程序

五个阶段中都要做:

(1)建表和查表(符号表管理)

及时维护符号表,方便快速查找

符号表:记录源程序的标识符及其属性信息

(2)出错处理

3、遍(PASS):对源程序( 包括源程序中间形式) 从头到尾扫描一次,并做有关的加工处理 , 生成新的源程序中间形式或目标程序,通常称之为一遍。

区别基本阶段:

遍 指完成5个基本阶段要经过几次扫描。

遍
4、编译程序的前端和后端

  • 前端: 与源程序有关的编译部分。
    如:词法分析、 语法分析、 语义分析、 中间代码生成、代码优化——分析部分
    特点: 与源语言有关
  • 后端: 与目标机有关的部分。
    目标程序生成( 与目标机有关的优化)——综合部分
    特点: 与目标机有关

why分为前后端:

根据源语言、目标机的不同,灵活改写、搭配

5、编译程序的前后处理器
在这里插入图片描述


版权声明:本文为b12345678_123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。