数据表示 简单变量: char: I byte integers: 2 or 4 bytes floats: 4 to 16 bytes booleans: I bit(but usually 1 byte) 指针: unsigned integers 维数组:一块连续的存储区 多维数组:一块连续的存储区,按行存放 结构(记录):把所有域( field)存放在一块连续的存储区 对象:类的实例变量象结构的域一样存放在一块连续的存储区, 但方法(成员函数)不存在该对象里 指令:
数据表示 简单变量: char: 1 byte integers: 2 or 4 bytes floats: 4 to 16 bytes booleans: 1 bit (but usually 1 byte) 指针:unsigned integers 一维数组:一块连续的存储区 多维数组:一块连续的存储区,按行存放 结构(记录):把所有域(field)存放在一块连续的存储区 对象:类的实例变量象结构的域一样存放在一块连续的存储区, 但方法(成员函数)不存在该对象里 指令:
目标程序运行时的存储组织 存储分配策略: 静态存储分配 动态存储分配栈式 堆式 简单的栈式分配方案 嵌套过程的栈式分配方案 分程序结构的存储分配方案 堆式存储
目标程序运行时的存储组织 存储分配策略: 简单的栈式分配方案 嵌套过程的栈式分配方案 分程序结构的存储分配方案 堆式存储 静态存储分配 动态存储分配——栈式 堆式
术语过程活动记录:AR 为说明方便,假定源程序是由过程组成,运行时称作过程的激活。 个过程的一次执行所需要的信息使用一个连续的存储区来 管理,这个区(块)叫做一个活动记录AR或 frame帧 般这个段要记录 ●临时值,如计算表达式时的中间工作单元。 ●局部变量(数据) ●保存运行过程前的状态(返回地址,寄存器值… ●存取链(可选)对于非局部量的引用。 ●控制链(可选)指向调用者的活动记录,释放栈。 ●实参(形式单元) ●返回值(对函数)(有时可使用寄存器存放返回值)
术语-过程活动记录 : AR 为说明方便,假定源程序是由过程组成,运行时称作过程的激活。 一个过程的一次执行所需要的信息使用一个连续的存储区来 管理,这个区(块)叫做一个活动记录AR或 frame 帧 一般这个段要记录: l 临时值,如计算表达式时的中间工作单元。 l 局部变量(数据) l 保存运行过程前的状态(返回地址,寄存器值……) l 存取链(可选) 对于非局部量的引用。 l 控制链(可选) 指向调用者的活动记录,释放栈。 l 实参(形式单元) l 返回值(对函数)(有时可使用寄存器存放返回值)
简单的栈式分配方案 程序结构特点过程定义不嵌套,过程可 递归调用,含可变数组; 例:main 全局变量的说明 R end r; proc end Q; 主程序执行语句 end main
简单的栈式分配方案 • 程序结构特点:过程定义不嵌套,过程可 递归调用,含可变数组; • 例: main • 全局变量的说明 • proc R • …… • end R; • proc Q • …… • end Q; • 主程序执行语句 • end main
Main---->Q--->R Main--->Q---->Q TOP1R的活动记录Q的活动记录 SP---- Q的活动记录 Q的活动记录 主程序全局 主程序全局 数据区 数据区 TOP-+临时工作单元 局部简单变量 局部数组的内情向量 保存运行过程前的状态(返回地址,寄存器值 实参(形式单元)和参数个数 SP. 控制链(老SP)
Main---->Q---->R Main--->Q---->Q TOP-----> R 的活动记录 Q 的活动记录 SP------> Q 的活动记录 Q 的活动记录 主程序全局 主程序全局 数据区 数据区 TOP----> 临时工作单元 局部简单变量 局部数组的内情向量 保存运 行过程前的状态(返回地址,寄存器值……) 实参(形式单元)和参数个数 SP-----> 控制链(老 SP)