编译原理第9章重点.ppt

* 第九章 运行时存储空间组织 在程序的执行过程中,程序中数据的存取是通过与之对应的存储单元来进行的。 标识符对应的内存地址都是由编译程序在编译时或由其生成的目标程序运行时进行分配。 程序中使用的存储单元都由标识符来表示。 第九章 运行时存储空间组织 9.1 目标程序运行时的活动(略) 9.2 运行时存储器的划分 9.3 静态存储分配(略) 9.4 简单的栈式存储分配 9.5 嵌套过程语言的栈式实现 9.6 堆式动态存储分配 9.2 运行时存储器的划分 一、运行时存储器的划分 1.编译器需要在存储区保护的对象 (1)目标代码?编译时可确定,故可放在一个静态确定的区域 (2)数据对象?部分数据对象的大小在编译时可确定,故也可 放在一个静态确定的区域 (3)跟踪过程活动的控制栈 堆 ↓ ↑ 栈 静态数据 目标代码 2.栈和堆 A.栈:用扩充的栈来管理过程的活动,当发生过程调用时, 中断当前活动的执行,激活新被调用过程的活动, 并把包含在这个活动生存期中的数据对象以及该活 动有关的其它信息存入栈中。当控制从调用返回时, 将所占存储空间弹出栈顶。同时,被中断的活动恢 复执行。 B.堆(heap)——存放动态数据,大小可随程序的运 行而

文档评论(0)

1亿VIP精品文档

相关文档