电子科技大学编译原理复习笔记(一):绪论

目录

前言

重点一览

语言的分类

冯诺依曼体系结构

绑定的概念

变量

虚拟机

程序单元 

本章小结


前言

本复习笔记基于张老师的课堂PPT,供自己期末复习与学弟学妹参考用。


重点一览


语言的分类

  • 命令式语言(强制式语言):冯诺依曼
  • 函数式语言:数学函数
  • 逻辑式语言:数量逻辑
  • 对象式语言:抽象数据类型

冯诺依曼体系结构

基础

存储器+控制器+处理器

特点

  • 数据/指令用二进制形式存储 
  • “存储程序”的工作方式
  • 程序顺序执行
  • 存储器的内容可以被修改

在命令式(强制式)语言上的表现

  • 变量:存储单元及其名称由变量概念代替,可以代表一个或一组单元且可修改
  • 赋值:计算结果必须存储
  • 重复:完成复杂计算时必须重复执行某些指令序列

绑定的概念

  • 属性:实体具有的特性
  • 绑定:一个对象(或事物)与其某种属性建立起某种联系的过程
  • 描述符:用以描述实体的属性的符号、语句或表格等,即实体到属性的映像
  • 绑定时间:把对象(实体)与它某个属性联系起来的时刻

  • 静态绑定:在编译时能确定的属性,称为静态属性,若绑定在编译时完成,运行时不改变,称为静态绑定
  • 动态绑定:凡是在运行时才能确定的属性称为动态属性,若绑定在运行时完成,称为动态绑定

变量

变量是对一个或若干个存储单元的抽象,赋值语句则是修改存储单元内容的抽象

变量除名字外,具有四个属性:作用域、生存期、值、类型

变量的作用域

  • 可以访问该变量的程序范围
  • 静态作用域绑定:按照程序的语法结构定义变量作用域
  • 动态作用域绑定:按照程序的执行动态定义变量作用域

变量的生存期

  • 一个存储区绑定于一个变量的时间区间
  • 数据对象:存储区和它保存的值
  • 分配:变量获得存储区的活动
  • 长度:变量所分配的存储单元的个数

变量的值

  • 变量对应存储区单元的内容
  • 匿名变量的访问通过指针实现
  • 变量与它的值绑定是动态的
  • 变量的初始化:不初始化报错/随机值初始化/缺省值初始化(如缺省值0)

变量的类型

  • 与变量相关联的值的类及对这些值进行的操作的说明 
  • 可用来解释变量绑定的存储区的内容(二进制位串)的意义
  • 语言定义时,类型名通常绑定于某一个值类和某一组操作
  • 语言实现时,值和操作绑定于某种机器二进制表示

变量类型的绑定

  • 静态绑定:通过说明语句完成
  • 动态绑定:执行时隐示说明且动态变化

虚拟机

虚拟机是由软件实现的机器。


程序单元 

  • 程序单元:程序执行过程中的独立调用单元(子程序/分程序/过程/...)
  • 单元的表示:编译时单元表示是该单元的源程序;运行时单元表示代码段和活动记录组成的整体,称为单元实例
  • 活动记录:执行单元所需要的信息以及该单元的局部变量所绑定的数据对象的存储区
  • 非局部变量:一个程序单元可以引用未被本单元说明而被其他单元说明的变量
  • 引用环境:局部变量+非局部变量
  • 别名:同一单元的引用环境中有两个变量绑定于同一个数据对象,则称这些变量具有别名
  • 副作用:对绑定于一个非局部变量的对象进行修改时,将产生副作用

程序单元可以递归激活,所以一个单元可以有很多个实例,但代码段相同,不同的仅仅是活动记录


本章小结

本章内容概念性强,属于绪论,熟读概念即可,注意标红标粗的地方。

猜你喜欢

转载自blog.csdn.net/m0_59180666/article/details/130831158