第九章 总结及作业(4)【编译原理】

news2024/11/15 16:22:11

第九章 总结及作业(4)【编译原理】

  • 前言
  • 推荐
  • 第九章 运行时存储空间组织
    • 9.1 目标程序运行时的活动
      • 9.1.1过程的活动
      • 9.1.2参数传递
    • 9.2 运行时存储器的划分
      • 9.2.1运行时存储器的划分
      • 9.2.2 活动记录
      • 9.2.3 存储分配策咯
    • 9.3 静态存储分配
      • 9.3.1数据区
      • *9.3.2公用语句的处理
      • *9.3.3等价语句的处理
      • 9.3.4 地址分配
      • 9.3.5 临时变量的地址分配
    • 9.4 简单的栈式存储分配
      • 9.4.1C的活动记录
      • 9.4.2C的过程调用、过程进入、数组空间分配和过程返回
    • 9.5 嵌套过程语言的栈式实现
      • 9.5.1非局部名字的访问的实现
      • 9.5.2参数传递的实现
    • 9.6 堆式动态存储分配
      • 9.6.1堆式动态存储分配的实现
      • 9.6.2隐式存储回收
  • 第九章 作业
    • 课堂作业
    • 4
  • 最后

前言

2023-6-21 10:17:58

以下内容源自《【编译原理】》
仅供学习交流使用

推荐

第八章 总结【编译原理】

第九章 运行时存储空间组织

9.1 目标程序运行时的活动

9.1.1过程的活动

过程 过程的活动 过程的活动记录
类似于
程序 程序的执行(进程) 进程管理块(PCB)

9.1.2参数传递

  • 传地址( call by reference)
  • 传值( call by value)
  • 传名(call by name):也称为“换名”

9.2 运行时存储器的划分

9.2.1运行时存储器的划分

在这里插入图片描述

9.2.2 活动记录

在这里插入图片描述

以下是我的总结

  • 返回地址:在被调过程执行完之后用于返回主调活动的执行调用地址
  • 动态链:在被调过程执行完之后用于返回主调活动的活动地址
  • 静态链:用于在嵌套过程中逐层向外查找变量作用域

9.2.3 存储分配策咯

  • 静态分配策略
  • 栈式动态分配策略
  • 堆式动态分配策略

9.3 静态存储分配

9.3.1数据区

*9.3.2公用语句的处理

*9.3.3等价语句的处理

9.3.4 地址分配

9.3.5 临时变量的地址分配

9.4 简单的栈式存储分配

在这里插入图片描述
在这里插入图片描述

9.4.1C的活动记录

在这里插入图片描述

9.4.2C的过程调用、过程进入、数组空间分配和过程返回

在这里插入图片描述

理解:i+3[TOP]
i+3[TOP]=i[TOP+3]
TOP+3根据图9.14可以看出是指向形式变量的首地址
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

9.5 嵌套过程语言的栈式实现

在这里插入图片描述

9.5.1非局部名字的访问的实现

在这里插入图片描述

重点:静态链和动态链的分析
结合:总结分析
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

过程 层次
P	0
S	1
Q	1
R	2

(b)过程S中调用Q时; Q的display有0 13
因为S和Q同层,所以没有S的5

在这里插入图片描述

在这里插入图片描述

9.5.2参数传递的实现

9.6 堆式动态存储分配

类似于
第四章 存储器管理【操作系统】

在这里插入图片描述

9.6.1堆式动态存储分配的实现

类似于
第四章 存储器管理【操作系统】- 4.3.4 基于顺序搜索的动态分区分配算法

在这里插入图片描述

9.6.2隐式存储回收

类似于
第四章 存储器管理【操作系统】- 4.3.3 动态分区分配
在这里插入图片描述

第九章 作业

2023-6-22 12:03:37

课堂作业

在这里插入图片描述
(1)

a是全局变量
传值 a=6
传地址 a=6

(2)
在这里插入图片描述

另外

参阅:
pascal 函数与过程中 定义有无VAR的区别
Pascal函数

使用
Pascal在线运行

传值

Program ex;
var a:integer;
    procedure pp(x:integer);
        begin
            x:=5; a:=x+1
        end;
begin
    a:=2; pp(a); write(a)
end.

在这里插入图片描述

传地址

Program ex;
var a:integer;
    procedure pp(var x:integer);
        begin
            x:=5; a:=x+1
        end;
begin
    a:=2; pp(a); write(a)
end.

在这里插入图片描述

4

在这里插入图片描述

Excel表格怎么拉序号递减

输入1
选中第一个序号单元格,鼠标指向填充柄的右下角,直到鼠标变成“+”字形,然后点击拖动至最后一个单元格,即可完成序号列的自动填充。
然后降序排列

在这里插入图片描述

另外

program PP(input,output);
    VAR k:integer;
    FUNCTION F(n:integer): integer;
    begin
        if n<=0 then F:= 1
        else F:= n * F(n- 1);
    end;
begin
    K:= F(10);
    write(K)
end.

输出10的阶乘
在这里插入图片描述

2023-6-22 14:23:30

最后

2023-6-22 14:23:32

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

祝大家逢考必过
点赞收藏关注哦

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

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

相关文章

基于深度学习的人脸检测技术

用到环境 1、pycharm community edition 2022.3.2 2、Python 3.10 整篇内容都已上传至我的csdn资源中&#xff0c;想用的请移步。 流程 多任务级联卷积神经网络(Multi-task Cascaded Convolutional Networks, MTCNN)算法进行人脸检测 普通人脸检测 单人人脸检测 图1 单人人…

我最喜欢的编程语言是python,以及我的见解!!

这里写目录标题 我最喜欢的编程语言&#xff1a;1、我个人认为编程语言优劣的评选标准2、我对不同编程语言的优点与缺点的拙见**1. Java****2. Python****3. JavaScript****4. C语言&#xff1a;****5. C语言&#xff1a;** 3、对python编程语言未来发展的猜测和未来趋势 我最喜…

Vicuna-13B使用云服务器部署

Vicuna概述 Vicuna由一群主要来自加州大学伯克利分校的研究人员推出&#xff0c;仍然是熟悉的配方、熟悉的味道。Vicuna同样是基于Meta开源的LLaMA大模型微调而来&#xff0c;它的训练数据是来自ShareGPT上的7万多条数据&#xff08;ShareGPT一个分享ChatGPT对话的谷歌插件&am…

kerberos配置dolphinscheduler

kerberos配置dolphinscheduler 一、添加dolphin 用戶1.所有節點上執行如下命令&#xff1a; 二、DolphinScheduler集群模式部署1.集群规划2.前置准备工作3.解压DolphinScheduler安装包4. 创建元数据库及用户5. 配置一键部署脚本6 初始化数据库7.修改common配置文件8. 一键部署D…

华为、思科和瞻博网络三个厂商如何配置基本ACL和高级ACL?

今天给大家带来基本ACL和高级ACL的配置&#xff0c;主要会介绍三个厂商的配置&#xff1a; 其他厂商也可以参考&#xff0c;比如华三的可以参考华为的&#xff0c;锐捷的参考思科的。 1. 基本ACL配置 基本ACL&#xff08;Access Control List&#xff09;是一种简单的网络安全…

【Java高级语法】(十二)可变参数:Java中的“可变之美“,做好这些细节,你的程序强大又灵活~

Java高级语法详解之可变参数 &#x1f539; 前言1️⃣ 概念2️⃣ 优势和缺点3️⃣ 特征和应用场景3.1 特征3.2 应用场景 4️⃣ 使用和原理5️⃣ 使用技巧5.1 可变参数结合泛型5.2 使用元组或列表进行参数传递5.3 使用默认值5.4 缓存计算结果 6️⃣ 实战&#xff1a;构建动态日志…

【Vue3+Ts project】认识 Websocket 以及 socket.io 库

目录 Websocket socket.io Socket.iO 事件名总结&#xff1a; Socket.IO 方法总结 Websocket 作用&#xff1a; WebSocket 仍然提供实时的双向通信功能&#xff0c;使用Vue3 应用程序能够与服务器进行实时数据交换降低延迟和网络开销&#xff1a;相比传统的HTTP请求-响…

scratch lenet(7): C语言计算可学习参数数量和连接数量

scratch lenet(7): C语言计算可学习参数数量和连接数量 1. 目的 按照 LeNet-5 对应的原版论文 LeCun-98.pdf 的网络结构&#xff0c;算出符合原文数据的“网络每层可学习参数数量、连接数量”。 网络上很多人的 LeNet-5 实现仅仅是 “copy” 现有的别人的项目&#xff0c; 缺…

求2的N次幂(C++)解决高精度运算

​&#x1f47b;内容专栏&#xff1a;《C/C专栏》 &#x1f428;本文概括&#xff1a; 计算高精度的2的N次方数字。 &#x1f43c;本文作者&#xff1a;花 碟 &#x1f438;发布时间&#xff1a;2023.6.22 文章目录 ​前言求2的N次方&#xff0c;N ≤ 10000实现思路&#xff1a…

SpringBoot 如何使用 @PathVariable 进行数据校验

SpringBoot 如何使用 PathVariable 进行数据校验 在 SpringBoot 项目中&#xff0c;我们经常需要从 URL 中获取参数并进行相关的数据校验。而 PathVariable 注解就是一种非常方便的方式&#xff0c;可以让我们在方法参数中直接获取 URL 中的参数&#xff0c;并进行数据校验。本…

基于python开发实现数学中各种经典曲线的可视化

今天正好有点时间就想着把之前零星时间里面做的一点小东西整合一下梳理出来&#xff0c;本文的核心目的就是想要基于python来开发实现各种有趣的数学曲线的可视化展示。 笛卡尔心形线 笛卡尔心形线是一种二维平面曲线&#xff0c;由法国数学家笛卡尔在17世纪提出。它得名于其…

基于springboot+Redis的前后端分离项目(三)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 优惠券秒杀 优惠券秒杀1 -全局唯一ID2 -Redis实现全局唯一Id3 添加优惠卷4 实现秒杀下单5 库存超卖问题分析6 优惠券秒杀-一人一单…

Spring Boot 异常处理的主要特点

Spring Boot 异常处理的主要特点 在 Web 应用程序中&#xff0c;异常处理是非常重要的一部分。在 Spring Boot 中&#xff0c;异常处理是非常简单和灵活的。本文将介绍 Spring Boot 异常处理的主要特点&#xff0c;并提供一些示例代码来帮助您更好地理解。 异常处理的主要特点…

王道计算机网络学习笔记(1)——计算机网络基本知识

前言 文章中的内容来自B站王道考研计算机网络课程&#xff0c;想要完整学习的可以到B站官方看完整版。 一&#xff1a;计算机网络基本知识 1.1.1&#xff1a;认识计算机网络 计算机网络的功能 网络把许多计算机连接在一起&#xff0c;而互联网则将许多网络连接在一起&#x…

第一章JavaScript简介

第一章JavaScript简介 js是一门,高级,动态,解释型编程语言 每种语言都必须有一个平台或标准库,用于执行包括基本输入和输出在内的基本操作.核心js语言定义了最小限度的API,可以操作数组,文本,数组,集合,映射等,但不包括任何输入输出的功能.输入和输出(以及更加复杂的特性,如联…

基于Servlet实现分页查询

Servlet JSPJSTL MySQLBootstrap 等技术实现分页查询功能。 所用工具&#xff1a;IDEA 2022.3.3 Navicat Tomcat 等。 本文目录 一&#xff1a;运行效果 二&#xff1a;代码详解 &#xff08;1&#xff09;index.jsp &#xff08;2&#xff09;PageBean &#xff08…

图解操作系统笔记

硬件基础 CPU是如何执行程序的&#xff1f; 程序执行的基本过程 第一步&#xff0c;CPU 读取「程序计数器」的值&#xff0c;这个值是指令的内存地址&#xff0c;然后 CPU 的「控制单元」操作「地址总线」指定需要访问的内存地址&#xff0c;接着通知内存设备准备数据&#…

python:并发编程(十七)

前言 本文将和大家一起探讨python并发编程的实际运用&#xff0c;会以一些我实际使用的案例&#xff0c;或者一些典型案例来分享。本文使用的案例是我实际使用的案例&#xff08;中篇&#xff09;&#xff0c;是基于之前效率不高的代码改写成并发编程的。让我们来看看改造的过…

excel数据的编排与整理——行列的批量处理

excel数据的编排与整理——行列的批量处理 1 一次性插入多行多列 1.1 插入连续行 1.1.0 题目内容 1.1.1 选中插入的位置➡按住shift键➡往下选中2行 1.1.2 鼠标右击➡点击插入 1.1.3 插入后的效果 1.2 插入不连续行 1.2.0 题目内容 1.2.1 按下ctrl键➡选中插入的位置,需要插…

7.4_1B树(二序查找树BST的升级版)

如果需要查找的值比节点小&#xff0c;会向左子树方向查找&#xff0c;如果比节点值大&#xff0c;会向右子树方向查找 拓展为5叉的形态 5叉排序树的定义 num是这个节点中真实存在的节点个数 那么一个节点中 最少有1个关键字&#xff0c;两个分叉 最多有4个关键字&#xff0c…