编译原理:运行时存储空间的组织和管理
编译程序在完成词法分析、语法分析和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来,弄清楚将来在代码运行时刻,源代码中的各种变量,常量是如何存放的,如何访问的概念过程的活动:过程的一次执行被称为过程的一次活动活动记录:一个过程的一次执行所需要的信息使用一个连续的存储区来管理,这个区叫做一个活动记录活动的生存期:从执行该过程体第一步操作到最后一步操作之间的操作
编译程序在完成词法分析、语法分析和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来,弄清楚将来在代码运行时刻,源代码中的各种变量,常量是如何存放的?如何访问的?
1, 概念
过程的活动:过程的一次执行被称为过程的一次活动。
活动记录:一个过程的一次执行所需要的信息使用一个连续的存储区来管理,这个区叫做一个活动记录。
活动的生存期:从执行该过程体第一步操作到最后一步操作之间的操作时间,包括执行时调用其他过程花费的时间(过程可以是递归的,一个过程可以对应多个活动)。
2,静态分配策略
基本策略:在编译时就安排好目标程序运行时的全部数据空间,并能确定每个数据项的单元地址。
适用的分配对象:子程序的目标代码段,全局数据目标(全局变量)。
分配要求:不允许递归调用,不含有可变数组。
3,动态存储分配
1,如果一个程序设计语言允许递归过程,可变数组或允许用户自由申请和释放空间,那么,就需要采用动态存储管理技术。
2,两种动态存储分配方式:栈式,堆式。
4,栈式动态存储分配方式
分配策略:将整个程序的数据空间设计为一个栈。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)