资源描述:
《哈工大编译原理第7章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章运行时刻环境1序7.1源语言中的一些问题7.2存储组织7.3运行时刻存储分配策略7.4非局部名字的访问7.5符号表2序计算环境运行时的环境计算目标代码映射源程序源程序中的名字(常量,变量)目标机存储空间。它受命于源程序的执行语义。源程序由一组过程按某种规则组成。过程的一次执行称作一次活动.3在过程的语句序列执行之前,过程中访问的对象构成此过程的运行环境,由运行支持程序组织好。PROCEDUREsub(x,y:real);VARi,j:integer;a:ARRAY[1..5]OFreal;e,f:real;BEGINf:=e+i*j;END;4f符号表名字形类型偏移量活
2、动记录布局=>老SP(sp,0)x形real3返回地址(sp,1)y形real42(sp,2)(sp,3)(sp,5)iint5i(sp,9)jint9j(sp,13)aarray13a(sp,53)eereal53(sp,61)freal61(sp,4)xyt1t2t3(sp,62)(sp,63)(sp,64)5中间代码*ijt1*(sp,20)(sp,21)(sp,29)+et1t2+(sp,27)(sp,29)(sp,30)itort2–t3itor(sp,30)–(sp,31):=t3–f:=(sp,31)–(sp,28)确定活动记录中局部数据的地址:假设sp标记一个活动
3、记录的开始的位置,dx表示x的地址相对于sp的偏移量。那么,x在过程的目标代码中的地址可写成dx(sp)67.1有关源程序中的一些问题目的:构造运行程序的策略和方法1.1过程1.2活动树1.3控制栈1.4说明的作用域1.5名字的绑定1.6参数传递1.7构造运行程序和源程序有关的一些问题71.1过程构成源程序的两个过程行文,源程序由一组过程组成,不同的程序设计语言,由过程构成源程序的方法不同。要么是嵌套的,要么是平行的。81.2活动树程序执行期间的控制流:1.程序执行的控制是顺序的;2.过程的每一次执行都是从过程体的开头开始,并最终把控制返回到紧接着该过程被调用点的后面。9一个过程p
4、的一次活动的生存期:mainP其中包括执行过程p所调用的过程的执行时间,以及这些过程所调用的过程的执行时间,如此等等。在该过程体第一步到最后一步之间的语句的执行时间。p10这种活动生存期的嵌套性质可以通过在每一个过程中插入两个打印语句来加以跟踪。2、如果a和b是两个过程活动,那么它们的生存期要么是并列的,要么是嵌套的。控制流的特点:1、每当控制流从过程p的活动进入到过程q的活动中后,它将返回到过程p的同一次活动中。11programsort(input,output); vara:array[0..10]ofinteger;procedurereadarray; v
5、ari:integer; begin… end;functionpartition(y,z:integer):integer; vari,j,x,v:integer; begin … end;procedurequicksort(m,n:integer); vari:integer; begin end … end;begin … end.程序见P254页12执行开始enterreadarray leavereadarrayenterquicksort(1,9)enterpartition(1,
6、9) leavepartition(l,9)enterquicksort(1,3) ................ leavequicksort(1,3)enterquicksort(5,9) ................ leavequicksort(5,9)leavequicksort(1,9)执行结束这是递归调用13递归:一个过程是递归的,如果同一过程的一次新的活动可以在前面活动结束以前开始。活动树:在一棵活动树中:2.根结点代表主程序的活动;3.代表a的结点是b结点的父结点当且仅当控制从活动a进入活动b;4.结点a在结点b的左边当且仅当a
7、的生存期发生在b的生存期之前用一颗树来描绘控制进入和离开活动的途径。这样的树称作活动树。1.每一个结点代表一个过程的活动;14srq(1,9)p(1,9)q(1,3)p(1,3)q(1,0)q(2,3)p(2,3)q(2,1)q(3,3)q(5,9)p(5,9)q(5,5)q(7,9)p(7,9)q(7,7)一棵活动树假设I=4假设I=1假设I=1假设I=2假设I=6假设I=8假设I=8q(9,9)15结论:且每一个活动只有一个结点表示;当控制进入某一个活动时,可以直