2.活动记录的特点 除了变量存储区外,其余部分存储长 度编译时可以确定,则元素i地址可用下 式计算 D+offset(1) 其中,Oe是在活动记录中的位移D是 活动记录的首地址
2. 活动记录的特点 除了变量存储区外, 其余部分存储长 度编译时可以确定, 则元素i的地址可用下 式计算 D+offset(i) 其中, offset(i)是i在活动记录中的位移; D是 活动记录的首地址
三.变量的存储分配 1.静态变量:不管在程序单元的哪一次 活动中,均绑定于相同的存储位置 条件是:活动记录,变量的存储位置在 编译时可以确定 2.半静态变量:编译时确定相对位置, 单元被激活后,x绑定于D+ offset(x) 条件是:语言允许递归调用
三. 变量的存储分配 1. 静态变量: 不管在程序单元的哪一次 活动中, 均绑定于相同的存储位置 条件是: 活动记录, 变量的存储位置在 编译时可以确定 2. 半静态变量: 编译时确定相对位置, 单元被激活后, x绑定于D+offset(x) 条件是: 语言允许递归调用
3.半动态变量:动态数组;编译时在活 动记录中建立描述符 例:[1.m]inta; [1.n int b 4.动态变量:动态分配。编译时在活动 记录中为动态变量设置二个指针,一个指 向该变量的描述符,另一个指向该变量的 存储空间
3. 半动态变量: 动态数组; 编译时在活 动记录中建立描述符 例: [1..m] int a; [1..n] int b; 4. 动态变量: 动态分配。编译时在活动 记录中为动态变量设置二个指针, 一个指 向该变量的描述符, 另一个指向该变量的 存储空间
四.存储分配模式 1.静态分配 只允许静态变量,变量与存储区域的 绑定关系在编译时便可建立,并完成存储 分配 不允许递归调用,不允许动态数组,不 允许动态类型的数据对象,即不允许有非 静态变量。如: FORTRAN语
四. 存储分配模式 1. 静态分配 只允许静态变量, 变量与存储区域的 绑定关系在编译时便可建立, 并完成存储 分配。 不允许递归调用, 不允许动态数组, 不 允许动态类型的数据对象, 即不允许有非 静态变量。如: FORTRAN语言
2栈式分配 各单元之间的调用关系遵循“后进先出” 模式; 活动记录的建立和撤消也满足“后进先 出”模式; 用栈分配活动记录 分配方法:当激活一个程序单元时,其活 动记录就动态地分配于栈顶
2. 栈式分配 各单元之间的调用关系遵循“后进先出” 模式; 活动记录的建立和撤消也满足“后进先 出”模式; 用栈分配活动记录; 分配方法: 当激活一个程序单元时, 其活 动记录就动态地分配于栈顶