编译程序在完成词法分析、语法分析和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来,弄清楚将来在代码运行时刻,源代码中的各种变量,常量是如何存放的,如何访问的

 概念

过程的活动:过程的一次执行被称为过程的一次活动

活动记录:一个过程的一次执行所需要的信息使用一个连续的存储区来管理,这个区叫做一个活动记录

活动的生存期:从执行该过程体第一步操作到最后一步操作之间的操作时间,包括执行时调用其他过程花费的时间(过程可以是递归的,一个过程可以对应多个活动)

静态分配策略

基本策略:在编译时就安排好目标程序运行时的全部数据空间,并能确定每个数据项的单元地址

适用的分配对象:子程序的目标代码段,全局数据目标(全局变量)

分配要求:不允许递归调用,不含有可变数组

动态存储分配

1,如果一个程序设计语言允许递归过程,可变数组或允许用户自由申请和释放空间,那么,就需要采用动态存储管理技术

2,两种动态存储分配方式:栈式,堆式

栈式动态存储分配方式

分配策略:将整个程序的数据空间设计为一个栈

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐