每个过程的活动记录内容(非嵌套语言) TOP 临时单元 对任何局部变量X的 内情向量 引用可表示为变址访 局部变量 问: 形式单元 dx[SP] 2 参数个数 dx:变量X相对于活 动记录起点的地址, 1 返回地址 在编译时可确定。 SP→0 老SP 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 对任何局部变量X的 引用可表示为变址访 问: dx[SP] dx: 变量X相对于活 动记录起点的地址, 在编译时可确定。 参数个数 返回地址 形式单元 临时单元 内情向量 局部变量 SP→ 0 1 2 老SP TOP→ 每个过程的活动记录内容(非嵌套语言)
每个过程的活动记录内容(嵌套语言) TOP 临时单元 口连接数据 返回地址 内情向量 >动态链:指向调用该 局部变量 过程前的最新活动记 形式单元 录地址的指针。 2 静态链 >静态链:指向静态直 接外层最新活动记录 1 动态链 地址的指针,用来访 SP→0 返回地址 问非局部数据。 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ❑连接数据 ➢返回地址 ➢动态链:指向调用该 过程前的最新活动记 录地址的指针。 ➢静态链:指向静态直 接外层最新活动记录 地址的指针,用来访 问非局部数据。 静态链 动态链 形式单元 临时单元 内情向量 局部变量 SP→ 0 1 2 返回地址 TOP→ 每个过程的活动记录内容(嵌套语言)
每个过程的活动记录内容 TOP¥ 临时单元 口形式单元:存放相 内情向量 应的实在参数的地 局部变量 址或值。 形式单元 口局部数据区:局部 变量、内情向量、 2 静态链 临时工作单元(如 1 动态链 存放对表达式求值 SP→0 返回地址 的结果) 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ❑ 形式单元:存放相 应的实在参数的地 址或值。 ❑ 局部数据区:局部 变量、内情向量、 临时工作单元(如 存放对表达式求值 的结果)。 静态链 动态链 形式单元 临时单元 内情向量 局部变量 SP→ 0 1 2 返回地址 TOP→ 每个过程的活动记录内容
9.2.3 存储分配策略 ■静态分配策略(FORTRAN) 如果在编译时能确定数据空间的大小,则可采用静 态分配方法:在编译时刻为每个数据项目确定出 在运行时刻的存储空间中的位置。 ■动态分配策略(PASCAL) 如果在编译时不能确定运行时数据空间的大小, 则必须采用动态分配方法。允许递归过程和动态 申请释放内存。 口栈式动态分配 口堆式动态分配 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 静态分配策略(FORTRAN) 如果在编译时能确定数据空间的大小,则可采用静 态分配方法:在编译时刻为每个数据项目确定出 在运行时刻的存储空间中的位置。 ◼ 动态分配策略(PASCAL) 如果在编译时不能确定运行时数据空间的大小, 则必须采用动态分配方法。允许递归过程和动态 申请释放内存。 栈式动态分配 堆式动态分配 9.2.3 存储分配策略
9.3静态存储管理 PROGRAM MAIN integer X,Y COMMON /C/A,B END SUBROUTINE SUB1 real X,Z COMMON /C/A1,B1 ■n END 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 PROGRAM MAIN … integer X,Y COMMON /C/A,B … END SUBROUTINE SUB1 … real X,Z COMMON /C/A1,B1 … END 9.3 静态存储管理