【编译原理】之基础知识

文章目录

前言

  1. 《编译原理》真是继《微机原理》之后难啃的一块骨头,果然需要兴趣去支撑专业的学习,不然会被噎死。。doge
  2. 参考学习教材是《程序设计语言编译原理》陈火旺编著

引论基础知识

一、什么叫做编译程序

1. 翻译程序

能够把某一种 语言程序源语言程序)转换成另外一种语言程序( 目标语言程序),后者与前者在逻辑上是等价的

2. 编译程序

目标语言是诸如编译语言或机器语言之类的”低级语言”,这样的翻译程序称为编译程序

3. 解释程序

解释执行。以语言写的 源程序作为输入,但不产生 目标程序,而是 边解释边执行源程序本身

4. 诊断编译程序

专门用于帮助程序 开发调试的编译程序

5. 优化程序

着重于提高目标代码效率的编译程序

6. 目标机

运行编译程序的计算机叫做 宿主机
运行编译程序的所产生目标代码的计算机称为 目标机

7. 交叉编译程序

一个编译程序产生不同于其宿主机的机器代码

8. 可变目标编译程序

不需重写编译程序中与机器无关的部分就能改变目标机

【编译原理】之基础知识

; 二、编译过程描述

1. 词法分析

输入源程序对构成源程序的字符串进行扫描和分解,识别出一个个的单词

 如基本字,标识符,常数,算符和界符

2. 语法分析

在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位

如短语、字句、句子、程序段和程序

3. 语法分析和中间代码产生

对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)

4. 优化

对于前端产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的目标代码

    公共子表达式的提取
    循环优化
    删除无用代码

5. 目标代码生成

把中间代码变成特定机器上的低级语言代码

【编译原理】之基础知识

; 三、编译程序的结构

1. 编译程序总框

    词法分析器:输入源程序,进行词法分析,输出单词符号
    语法分析器:对单词符号串进行语法分析,识别出各类语法单位,最终判断输出输入串是否构成语法上正确的程序
    语义分析与中间代码产生器:按照语义规则对语法分析器规约出的语法单位进行语义分析并把它们翻译成一定形式的中间代码
    优化器:对中间件代码进行优化处理
    目标代码器:把中间代码翻译成目标程序

2. 表格与表格管理(最重要的是符号表)

3. 出错处理

    语法错误:指源程序中不符合语法规则的错误,它们可在语法分析或语法分析是检测出来
        括号不匹配
        缺少;

    语义错误:源程序中不符合语义规则的错误,这些错误一般在语义分析时检测出来,有的语义错误要在运行时才能检测出来
        说明错误
        作用域错误
        类型不一致

4. 遍

    受不同源语言、设计要求、使用对象和计算机条件的限制,往往将编译程序组织为若干遍。
    所谓遍,就是对源程序或源程序中的中间结果从头到位扫描一遍,并作有关的加工处理,生成新的中间结果或目标程序

5. 编译前端与后端

    编译前端:前端主要由源语言有关但与目标机无关的那些部分组成
    编译后端:后端包括编译程序中与目标机有关的那些部分,如与目标机有关的代码优化和目标代码生成

【编译原理】之基础知识

四、编译程序与程序设计环境

编译程序
连接程序
调试工具
集成化的程序设计环境

五、编译程序的生成

用一种T型图来表示源语言S、目标语言T和编译语言实现语言I之间的关系

【编译原理】之基础知识
【编译原理】之基础知识

; 1. 源语言

对被编译的源语言(如 FORTRAN、Pascal或C),要深刻理解其结构和含义

2. 目标语言

假定目标语言是 机器语言,那么,就必须清楚 硬件系统结构操作系统的功能

3. 编译方法

把一种语言程序 翻译为另一种语言程序方法有很多,但必须准确的掌握一二

【编译原理】之基础知识
【编译原理】之基础知识

Original: https://blog.csdn.net/weixin_46555054/article/details/124513483
Author: 陌小柠
Title: 【编译原理】之基础知识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544938/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球