编译原理课程概述

一、编译程序

编译程序种类

  • 诊断编译程序:便于诊断,效率不一定高
  • 优化编译程序:代码效率优化
  • 交叉编译程序:产生不同于宿主机(编译)的目标机(运行)代码
  • 可变目标编译程序:针对不同平台可生成不同代码

编译与解释

  • 编译统一进行翻译
  • 解释一句句翻译执行

二、编译过程

编译的五个阶段

  • 词法分析
    任务:识别单词
    原则:依据构词规则
    描述工具:有限自动机
  • 语法分析
    任务:分解成语法单位
    原则:依据语法规则
    描述工具:上下文无关文法
  • 中间代码产生
    任务:初步翻译
    原则:语义规则
    三元式,四元式,树

以上三个阶段称为编译前端(包括优化中与目标机器无关的部分)

  • 优化
    任务:产生更高效代码
    原则:程序等价变化规则
  • 目标代码产生
    任务:形成目标代码
    依赖于硬件系统和机器指令的含义
    三种形式:
  1. 绝对指令代码,可直接运行(机器语言)
  2. 可重新定位指令代码:需要连接装配(机器语言)
  3. 汇编指令代码:需要进行汇编(汇编语言)

以上两个阶段称为编译后端(与目标机有关)

三、相关名词

遍和阶段

  • 遍是指对源程序或源程序的中间表示从头到尾扫描一次
  • 阶段是指编译五个阶段
  1. 一个遍可以由若干段组成(比如,前三个阶段通常组成一遍)
  2. 一个阶段也可以分若干遍来完成(比如,优化阶段会扫描数遍来进行优化)

四、编译程序的生成

  • 以汇编语言和机器语言为工具
    优点:充分发挥系统功能,生成程序的效率高
    缺点:程序难读、难写、易出错、难维护
  • 高级语言书写
  1. 利用已有的编译程序实现另一语言的编译程序
  2. 移植方法(把一种机器上的编译程序移植到另一种机器上)
  3. 自展技术(先建立一个核心编译器,再在该基础上扩展,依次进行)
  4. 编译程序自动产生(给出语言语法描述,就能自动产生编译程序)

你可能感兴趣的:(个人笔记)