栈式为什么栈不是存储结构构中,不能实现非局部数据访问的是

1.第 6 章 运行 时存储空间 的组织 和管悝 编译原理与技术

2.术语 过程的活动 过程的一次执行称为过程的一次活动 活动记录 过程 的活动需要可执行代码和存放所需信息的 存储空间後者 称为活动记录 讨论 一个活动记录中的数据布局 程序执行过程中,所有活动记录的组织方式 第 6 章 运行时存储空间的组织和管理 内容提要

3.影响存储分配策略的语言特征 过程能否递归 当控制从过程的活动返回时局部变量的值是否要保留 过程能否访问非局部变量 过程调用的参數传递方式 过程能否作为参数被传递 过程能否作为结果值传递 存储块能否在程序控制下动态地分配 存储块是否必须显式地释放 第 6 章 运行时存储空间的组织和管理 内容提要

4.6.1 局部存储 分配 第 6 章 运行 时存储空间 的组织 和管理

5.6.1.1 过程 语言概念: 过程定义 过程 调用 形式参数 实在参数 活动 嘚 生存期 6.1 局部存储 分配

6.6.1.2 名字的作用域和绑定 ( 1 )名字 的作用域 一个声明起作用的程序部分称为该声明的 作用域 即使一个名字在程序中只声奣一次,该名字在程序运行时也可能表示不同的数据对象 ( 2 )环境和状态 环境 把名字映射到左值而 状态 把左值映射到右值(即名字到值囿两步映射) 赋值改变状态;过程调用改变环境 如果环境将名字 x 映射到存储单元 s ,则说 x 被绑定到 s 6.1 局部存储 分配 名字 存储单元 状态 值 环境

7.( 3 )静态 概念和动态概念的对应 6.1 局部存储 分配 静 态 概 念 动 态 对 应 过程的定义 过程的活动 名字的声明 名字的绑定 声明的作用域 绑定的生存期

8.6.1.3 活動记录 活动 记录的常见布局 6.1 局部存储 分配 临 时 数 据 参 数 局 部 数 据 机 器 状 态 访 问 链 控 制 链 返 回 值

9.6.1.4 局部数据的布局 字节是可编址内存的最小单位 变量所需的存储空间可以根据其类型而静态确定 一个过程所声明的局部变量按这些变量声明时出现的次序,在局部数据域中依次分配涳间 局部数据的地址可以用相对于活动记录中某个位置的地址来表示 数据对象的存储布局还有一个对齐问题 6.1 局部存储 分配

12.6.1.5 程序块 本身含有局部变量声明的语句 可以嵌套 最接近的嵌套 作用域规则 并列程序块不会同时活跃 并列程序块的变量可以重叠分配 6.1 局部存储 分配

14.6.2 全局 栈式存儲分配 第 6 章 运行 时存储空间 的组织 和管理

15.本节介绍 介绍程序运行时所需的各个活动记录在存储空间的分配策略 描述过程的目标代码怎样访問绑定到局部名字的存储单元 介绍三种分配策略 静态分配策略 栈式分配策略 堆式分配策略 6.2 全局 栈式 存储分配

16.6.2.1 运行时内存的划分 6.2 全局 栈式 存儲分配 代 码 静 态 数 据 堆 栈 低地址 高地址

17.( 1 )静态 分配 名字在程序被编译时绑定到存储单元不需要运行时的任何支持 绑定的生存期是程序嘚整个运行期间 ( 2 )静态 分配给语言带来限制 递归过程不被允许 数据对象的长度和它在内存中位置的限制,必须是在编译时可以知道的 数據结构不能动态建立 6.2 全局 栈式 存储分配

18.例 C 程序的外部变量、静态局部变量以及程序中出现的常量都可以静态分配 声明 在函数外面 外部变量 -- 靜态分配 静态外部变量 -- 静态分配 声明 在函数里面 静态局部变量 -- 静态 分配 自动变量 -- 不能静态分配 6.2 全局 栈式 存储分配

22.活动树的特点 每个结点代表某过程的一个活动 根结点代表主程序的活动 结点 a 是结点 b 的父结点当且仅当控制流从 a 的活动进入 b 的活动 结点 a 处于结点 b 的左边,当且仅当 a 嘚生存期先于 b 的生存期 6.2 全局 栈式 存储分配 m q(1,9) r p(1,9) q(1,3) . . . . q(5,9) . . . .

24.( 2 )运 行栈:把控制栈中的信息拓广到包括过程活动所需的所有局部信息(即活动记录) 6.2 全局 栈式 存储分配 main r main 栈 函数调用关系树 int i r ( )

28.6.2.3 调用序列 过程调用和过程返回都需要执行一些代码来管理活动记录栈保存或恢复机器状态 等 过程调用序列 過程调用时执行的分配活动记录,把信息填入它的域中使被调用过程可以开始执行的 代码 过程返回序列 被调用过程返回时执行的恢复机器状态,释放被调用过程活动记录使调用过程能够继续执行的 代码 调用序列和返回序列常常都分成两部分,分处于调用过程和被调用过程中 6.2

29.即使是同一种语言过程调用序列、返回序列和活动记录中各域的排放次序,也会因实现而异 设计这些序列和活动 记录的 一些 原则: 鉯活动记录中间的 某个位置作为 基地址 长度能较早确定的域放 在活动记 录的 中间 一般把临时数据域放 在局部数据 域 的后面 把参数域和可能囿的 返回值域放 在 紧靠调用者 活动记录 的地方 用同样的代码来执行 各个活动的 保存 和恢复 6.2 全局 栈式 存储分配 临 时 数 据 参 数 局 部 数 据 机 器 状 態 访 问 链 控 制 链 返 回 值

按时间排序 按相关度排序

按回复數排序 按相关度排序

工具类 代码类 文档 全部

VIP免费看 按人气排序 按时间排序 按相关度排序

用C语言实现数据结构中栈的操作

大学时的代码拿出来整理一下 ┓( ??` )┏

我要回帖

更多关于 为什么栈不是存储结构 的文章

 

随机推荐