编译原理王晓斌第十三章.ppt

一、只含半静态变量的栈式分配 仅允许递归调用 变量及活动记录长度可静态确定 一个单元可多次激活而有多个实例,每个活动记录是在单元每次激活时动态建立并与代码段建立绑定关系的 1.特点 2.处理方法 (1)current:表示当前活动记录的开始位置 (2)free:表示数据存储器下一个可用单元 (3)变量绑定于它在活动记录中的常数位移I 变量通过current变址访问 (4)A调用B时:在A活动记录的栈顶之上建立起绑定 于B的当前实例的活动记录 (5)从B返回时,释放其活动记录 3.动态连接和动态链 动态连接:A调用B时,B的活动记录中保存的A的活动记录地址 动态链:由动态连接组成的一个调用链 F G F E A A call E; E call F; F call G; G call F; ... ... ... ... ... 4.CALL P 的处理 返回地址 动态连接 返回地址 动态连接 A的活动记录 即将建立的 P的活动记录 current free A … CALL p … (1)保存返回地址 D[ free ] := ? (2)保存主调过程的current D[free + 1] := current (3)建立P的current current := free (4)调整free free := free + L (5)转子

文档评论(0)

1亿VIP精品文档

相关文档