编译原理 当过程返回 (活动结束)时,当前活动记录 般包含如下内容: 连接数据 1.返回地址 2动态链:指向调用该过程前的最新活动记录 地址的指针。运行时,使运行栈上各数据区 按动态建立的次序结成链。链头为栈顶起始 位置。 3.静态链:指向静态直接外层最新活动记录地 址的指针,用来访问非局部数据。 第6觉
编译原理 第6页 当过程返回(活动结束)时,当前活动记录 一般包含如下内容: 连接数据 1.返回地址 2.动态链:指向调用该过程前的最新活动记录 地址的指针。运行时,使运行栈上各数据区 按动态建立的次序结成链。链头为栈顶起始 位置。 3.静态链:指向静态直接外层最新活动记录地 址的指针,用来访问非局部数据
编泽原理 形式单元:存放相应的实在参数的地址或值。 局部数据区:局部变量、内情向量、临时工作单 元(如存放对表达式求值的结果)。 指针SP指向现行过程(即最新进入工作的那个过 程)的活动记录在栈里的起始位置。 第7负
编译原理 第7页 形式单元:存放相应的实在参数的地址或值。 局部数据区:局部变量、内情向量、临时工作单 元(如存放对表达式求值的结果)。 指针SP指向现行过程(即最新进入工作的那个过 程)的活动记录在栈里的起始位置
编译原理 返回 活动记录结构图 TOP 临时单元 内情向量 局部变量 形式单元 静态链 动态连 连接数据 SP 返回地址 第8页
编译原理 第8页 活动记录结构图 临 时 单 元 内 情 向 量 局 部 变 量 形 式单 元 静 态 链 动 态 连 返 回 地 址 TOP SP 连接数据 返回
编泽原理 返回 存储分配策略 静态分配策略在编译时对所有数据对象分配 固定的存储单元,且在运行时始终保持不变。 栈式动态分配策略在运行时把存储器作为一 个栈进行管理,运行时,每当调用一个过程, 它所需要的存储空间就动态地分配于栈顶, 一旦退出,它所占空间就予以释放。 号堆式动态分配策略在运行时把存储器组织成 堆结构,以便用户关于存储空间的申请与归 还(回收),凡申请者从堆中分给一块,凡 释放者退回给堆。 第第9页
编译原理 第9页 存储分配策略 静态分配策略在编译时对所有数据对象分配 固定的存储单元,且在运行时始终保持不变。 栈式动态分配策略在运行时把存储器作为一 个栈进行管理,运行时,每当调用一个过程, 它所需要的存储空间就动态地分配于栈顶, 一旦退出,它所占空间就予以释放。 堆式动态分配策略在运行时把存储器组织成 堆结构,以便用户关于存储空间的申请与归 还(回收),凡申请者从堆中分给一块,凡 释放者退回给堆。 返回
编泽原理 静态分配策略 适用范围和特点: 1、程序语言不允许递归过程; 2、不许含可变体积的数据项目或待定性质的 名字; 3、在编译时就能够确定一个程序在运行时所 需的存贮空间大小,能够安排好目标程序运 行的全部数据空间,并能确定每个数据项的 单元地址。 第0贡
编译原理 第10页 一、静态分配策略 适用范围和特点: 1、程序语言不允许递归过程; 2、不许含可变体积的数据项目或待定性质的 名字; 3、在编译时就能够确定一个程序在运行时所 需的存贮空间大小,能够安排好目标程序运 行的全部数据空间,并能确定每个数据项的 单元地址