下载此文档

编译原理课件第十章 目标程序运行时的存储组织.ppt


文档分类:IT计算机 | 页数:约82页 举报非法文档有奖
1/82
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/82 下载此文档
文档列表 文档介绍
第十章 目标程序运行时的存储组织
第一节 数据空间的三种不同使用方法和管理方法
第二节 栈式存储分配的实现
第三节 参数传递
第四节 过程调用、过程进入和过程返回
1
知识结构
2
概述
静态存储分配
栈式存储分配
堆式存储分配
本章小结
第八章 运行时的存储组织与管理
3
概述
从逻辑上看,代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配
所谓运行时的环境是指目标计算机的寄存器和存储器的结构,以及用来管理存储器并保存执行过程所需要的信息。
几乎所有的程序设计语言都使用3种类型的存储环境:完全静态环境、基于栈的存储环境和基于堆的存储环境中的一种或几种。
4
概述
从逻辑上看,代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配
数据空间包括:用户定义的各种类型的数据对象(变量和常量)所需的存储空间,作为保留中间结果和传递参数的临时工作单元,调用过程时所需的连接单元,组织输入/输出所需的缓冲区。
5
概述
存储管理复杂度取决于源语言本身,具体包括:
允许的数据类型的多少
语言中允许的数据项是 静态确定
动态确定
程序决定名字的作用域的规则和结构
段结构
过程定义不嵌套,只允许过程递归调用
分程序结构 分程序嵌套
过程定义嵌套
6
存储区划分成:目标区、静态数据区、栈区、堆区:
目标代码区用以存放目标代码,这是固定长度的,即编译时能确定的
全程/静态数据区用以存放编译时能确定所占用空间的数据
堆/栈区用于可变数据以及管理过程活动的控制信息
目标代码区
全程/静态数据区


自由空间


运行时存储空间的划分
7
过程的活动记录
过程的活动记录是一段连续的存储区,用来存放过程的一次执行所需要的信息。
自变量(参数空间)
返回地址
用作局部数据的空间
用作局部临时变量的空间
过程活动记录
8
编译程序分配目标程序运行时的数据空间的基本依据是
 程序语言设计时对程序运行中存储空间的使用和管理办
 法的规定
在程序设计语言语义学中,使用environment表示将一个
 名字映射到一个存储位置的函数,state表示存储位置到
 值的映射,:
9
数据空间的使用和管理方法分成三种:
静态存储分配
栈式动态存储分配
堆式动态存储分配
10

编译原理课件第十章 目标程序运行时的存储组织 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数82
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sxlw2015
  • 文件大小427 KB
  • 时间2021-07-24
最近更新