运行时存储空间结构

运行时存储空间结构

ID:40631833

大小:648.50 KB

页数:18页

时间:2019-08-05

运行时存储空间结构_第1页
运行时存储空间结构_第2页
运行时存储空间结构_第3页
运行时存储空间结构_第4页
运行时存储空间结构_第5页
资源描述:

《运行时存储空间结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、9.2过程活动记录(ActivationRecord)和栈过程活动记录(AR):每当过程/函数被调用时,为其分配的局部空间的一种统一结构。存放在栈区的一段连续的存储单元中,由目标程序进行管理。是过程一次活动的一个现场记录。控制信息返回地址返回值临时变量形参局部变量活动记录栈区的组织AR链或动态链程序运行时,每调用一个函数,就要为其分配一段连续空间,用于存放该函数运行时的各种信息(过程活动记录AR),函数运行结束返回时,其活动记录就要释放掉;在当前AR中保存前一个AR首地址,这样形成了一个链表;CurrentAR:当前栈顶的AR;CurrentFunctio

2、n:当前AR对应的函数;AR0nilAR1AR2活动记录的详细结构活动记录动态链地址返回地址返回值临时变量形参局部变量过程层次空间大小寄存器状态变量访问环境spoffsetInitOffAR中每一项的详细解释sp:指向当前AR空间的首地址;(寄存器)动态链地址:动态链地址对应的就是当前函数的调用函数的AR首地址;返回地址:保存本函数执行结束后应返回的代码地址;即当前函数调用的下一条代码的地址;活动记录长度:当前活动记录的空间大小;过程层次:本函数的层数;AR中每一项的详细解释寄存器状态:保存在函数调用之前的所有寄存器的值;返回值:保存函数的返回值;访问环境

3、:保存相关信息,方便确定变量的存储地址;对于C语言来讲,可以不用(因为层数最大为1);形参变量区:存放参数的值的空间;局部变量区:存放局部变量的值的空间;临时变量区:存放临时变量的值的空间;AR的例子#definen2intsum=0;intfac(inti){if(i==0)return1;if(i<0)return-1;return(i*fac(i-1));}voidmain(){sum=fac(n);}活动记录的管理Who?目标代码完成AR的管理;When?函数调用时:f(e1,…,en)函数返回时:returnHow?调用时—申请活动记录空间并填写

4、相关内容返回时----释放活动记录的空间等活动记录的填写对应实际函数调用四元式包括(VALACT,result,offset,size)(CALL,f,true,t)需要做的事情将实参放到对应的形参单元中;将t(返回值应存放的变量)的地址存放在返回值单元;把sp的值放到动态链地址单元;填写层数;(可能不一定需要)保存返回地址(当前目标代码地址);保存变量访问环境;(可能不一定需要)保存AR长度size;(可能不一定需要)改变sp的值;转向f的入口地址;动态链地址返回地址返回值临时变量形参局部变量过程层次空间大小寄存器状态变量访问环境spCurrentAR活

5、动记录的填写对应形参函数调用四元式包括(VALACT,result,offset,size)(CALL,f,false,t)需要做的事情确定f作为形参的(level和offset);在当前的AR的形参区中可以找到对应的地址,其中存放的是对应实际函数的(层次,空间大小,入口地址);根据上述信息,做实际函数调用的事情;动态链地址返回地址返回值临时变量形参局部变量过程层次空间大小寄存器状态变量访问环境spCurrentAR活动记录的释放对应函数返回四元式包括(ENDFUNC,_,_,_)需要做的事情恢复寄存器;改变sp的值,sp=动态链地址空间存的值;转向返回地

6、址对应的代码执行;……动态链地址返回地址返回值临时变量形参局部变量过程层次空间大小寄存器状态变量访问环境spPreAR关于返回值的处理对应返回值四元式包括(RETURN,_,_,t)(RETURN,_,_,_)AR中返回值单元的内容存放的是一个地址;需要做的事情把返回值赋值给返回值单元对应地址的空间……动态链地址返回地址返回值临时变量形参局部变量过程层次空间大小寄存器状态变量访问环境spPreAR返回值9.3变量访问环境What?目标程序运行时,如何保存相关信息,从而保证找到变量的当前值实现抽象地址到具体地址的计算完全静态运行环境一到一的映射,可静态确定完

7、全动态运行环境动态确定,随时分配栈式运行环境(L,offset,mode)(spL+InitOff+offset)C语言的变量访问环境的实现变量的抽象地址到目标地址(0,off,mode)表示该变量是全局变量,并且保存在距离全局变量区首地址off个位置的单元中,即其具体地址应为:[gp]+off,其中gp表示的是全局变量区首地址(1,off,mode)表示该变量是定义在某一个函数中的局部变量,并且保存在该函数当前AR的距离局部变量区首地址off位置的单元中,即其具体地址为:[sp]+InitOff+off,其中sp对应的是该函数当前AR的首地址,Init

8、Off对应的是局部变量区之前的区距;(-1,off,mode)表示

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。