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

news2025/2/25 10:04:09

目录

前言

重点一览

语言的分类

冯诺依曼体系结构

绑定的概念

变量

虚拟机

程序单元 

本章小结


前言

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


重点一览


语言的分类

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

冯诺依曼体系结构

基础

存储器+控制器+处理器

特点

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

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

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

绑定的概念

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

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

变量

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

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

变量的作用域

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

变量的生存期

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

变量的值

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

变量的类型

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

变量类型的绑定

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

虚拟机

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


程序单元 

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

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


本章小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Activity的预览窗口StartingWindow添加

Activity的预览窗口StartingWindow添加 1、Activity组件启动2、ActivityStarter.java#startActivityInner() > 主要查看Task.java#startActivityLocked3、ActivityRecord.java#addStartingWindow到WindowManagerService.java#addWindow3.1 ActivityRecord.java#addStartingW…

一文搞定验证码(下部分)

文章目录 1.背景2.验证3.valid接口具体实现类SimpleImageCaptchaValidator 1.背景 上一篇文章讲了验证码生成的逻辑. 验证码-上篇. 大概来说就是: 服务端保存一些默认的验证码图片. 然后需要生成时创建一个包含随机字符的验证码字符图片根据随机字符和一些参数(如…

新入职一个00后卷王,每天加班到2点,太让人崩溃了····

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

chatgpt赋能python:PythonScheme:为什么你应该考虑在你的下一个项目中使用它

Python Scheme:为什么你应该考虑在你的下一个项目中使用它 介绍 Python是一种常用的编程语言,被广泛应用于各种应用程序,包括Web开发、数据分析和人工智能。今天,我们要讨论的是Python编程语言的一种方言,名为“Pyth…

HR不会告诉你!Java程序员月薪8K和20K的区别!

昨天有同学问好程序员,为啥都是干Java程序员,别人可以拿20k,我才拿8k呢?为啥人家能提前转正我就得晚俩月?小源一听大事不妙,赶紧连夜整理了以下清单供大家check! 对于刚入职场还有跳槽成功的同学…

【2023 · CANN训练营第一季】昇腾AI入门课(TensorFlow)微认证考试

1、下面哪个AI框架开发模型可以不用适配,直接在昇腾AI处理器上进行训练? A. PyTorch B. Caffe C. Mindspore D. Tensorflow C 2、使用Estimator进行脚本训练开发的一般步骤为(A) A. 数据预处理 --> 模型构建 --> 运行配置 -…

苏诗:医疗器械企业增长秘籍之CRM系统的 4 大能力建设

近些年,在国家医疗产业政策支持的推动下,医疗器械产业已进入蓬勃发展的“黄金时期”,医疗器械产品丰富度增加,配套服务体系逐渐完善,国产品牌效应进一步凸显。 医疗健康行业是纷享的战略行业之一,自2017年…

chatgpt如何自动生成角色prompt模板

chatgpt如何自动生成角色prompt模板 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 一、角色prompt模板 下面是套图的chatgpt模板,你可以手动的进行填写。将角色的描述填…

如何把数据从 TDengine 2.x 迁移到 3.x ?

一.迁移背景: 随着时序数据库(Time Series Database) TDengine 3.0 的发布至今,我们除了在持续地优化产品质量的本身,也一直在努力地提升用户体验。但由于 3.0 底层有大量的重构优化,导致开源版的 2.0 用户…

集权攻击-无权限条件下AD域凭据获取与利用分析

前言 对AD域攻击的前期,在没有任何域内据点或域用户凭据时,攻击者往往会使用用户名枚举、密码爆破、密码喷洒、Roasting等手段进行域用户凭据的窃取,本篇文章将针对AD域攻击时无权限环境下对域用户的信息收集及凭据窃取进行分析。 用户名枚举…

四、CNNs网络架构-深度可分离卷积

《A review of convolutional neural network architectures and their optimizations》论文指出一些高性能的卷积神经网络方法不可避免地带来巨大的计算成本,往往需要高性能GPU或高度优化的分布式CPU架构的支持。尽管CNNs应用向移动终端扩展,但大多数移…

如何在Spring Boot服务端实现公网远程调试并进行HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

Go语言 -- Web开发基础学习 net/http包

前言 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go语言最擅长的领域就是Web开发,此贴是本人入门完go语法基础后学习Web开发的学习笔记。 第一个Go Web 新建go文件hello_world.go 写入: package mainimport (&…

企业级信息系统开发——初探Spring AOP

文章目录 一、提出游吟诗人唱赞歌任务(一)采用传统方式实现(二)采用传统方式实现的缺点 二、采用配置方式使用AOP(一)创建本讲所需子包(二)创建杀龙任务类(三&#xff09…

VESD静电监控系统:提高静电防护效果与管理效率

随着科学技术不断发展,现代的工业对静电防护的要求越来越高。因为静电的存在可能会对产品质量、工作环境、甚至是人身产生威胁。静电监控系统是一项高效的管理工具,能够有效地控制和监测静电产生的情况,提高静电防护效果和管理效率。 VESD静电…

群晖DS920 video station使用教程

群晖DS920 video station使用教程 为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 安装video station在群晖套件里点一下就好,这里不说了。 一、添加视频库 可以添加电视剧、电视节目等类型。 比如我在国产剧这个视频…

写出诗一样代码的灵丹妙药: const与assert

🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,…

网络安全好就业吗?会不会容易被淘汰?

网络安全发展前景好吗?好就业吗?会不会容易被淘汰?很多刚入门或者想入门的小伙伴都会有这样的疑问 今天就在这里给大家介绍一下。我就在这个行业,目前湖南,薪资就没必要说了,高就对了。 这个行业优势就是工…

互联网营销推荐算法理论-30分钟理解协同过滤

一、协同过滤概念 不论在淘宝还是京东,你浏览了/购买了某个商品A,后面几天你在该app内总是会在首页看到商品A和商品A相似的商品,背后支撑这种能力的就是推荐系统,而其推荐算法可能就是协同过滤。(注:app内…

Scala学习(九)---List集合

文章目录 1.List1.1 不可变List集合1.2 可变集合ListBuffer 1.List List集合默认为不可变集合,List集合在实例化的时候,无法通过new关键字进行实例化,只能通过伴生apply方法来对其进行实例化 1.1 不可变List集合 创建一个不可变list集合 …