




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
變量環(huán)境堆區(qū)空間棧區(qū)空間靜態(tài)區(qū)空間目標(biāo)代碼空間庫代碼空間最大地址最小地址臨時(shí)變量區(qū)局部變量區(qū)形參區(qū)變量
環(huán)境活動(dòng)記錄大小寄存器狀態(tài)過程層數(shù)返回值返回地址動(dòng)態(tài)鏈指針sp過程活動(dòng)記錄top調(diào)用鏈、動(dòng)態(tài)鏈調(diào)用鏈:過程名序列若M是主程序名,則(M)是一個(gè)調(diào)用鏈;若(M,…,R)是調(diào)用鏈,且在R中有S的調(diào)用,則(
M,…,R,S)也是調(diào)用鏈。記為:CallChain(S)=(M,…,R,S)動(dòng)態(tài)鏈:如果有調(diào)用鏈CallChain(S)=(M,…,R,S),則它對(duì)應(yīng)的動(dòng)態(tài)鏈為:
DynamicChain=[AR(M),…,AR(R),AR(S)]活躍活動(dòng)記錄(LAR)LiveAR(LAR):一個(gè)過程S在動(dòng)態(tài)鏈中可有多個(gè)AR,但其中只有
AR(S
)是可
的,稱此AR(S)為S的活躍活動(dòng)記錄,并記為LiveAR(S),簡寫為LAR(S)?;钴S活動(dòng)記錄(LAR)例:假設(shè)有當(dāng)前調(diào)用鏈?zhǔn)牵∕,P1,P2,Q1,
R1,R2,R3
)則當(dāng)前動(dòng)態(tài)AR鏈為[AR(M),AR(P1),AR(P2),AR(Q),AR(R1),AR(R2),AR(R3)]活躍活動(dòng)記錄LAR為:LAR(M
)
=
AR(M)LAR(Q
)
=AR(Q1)LAR(
P
)=AR(P2)LAR(
R)
=AR(R3)鏈和變量
環(huán)境過程鏈(DeclaChain):過程名序列(M)是過程鏈,M是主程序名;若(M,…,P)是過程
鏈,且P中有過程Q的
,則(M,…,P,Q)也是過程聲明鏈;記為:DeclaChain(Q)=(M,…,P,Q)當(dāng)前變量
環(huán)境VarVisitEnv:若DeclaChain(Q)=
[M,…,P,Q]則VarVisitEnv(LAR(Q))=[LAR(M),…,LAR(P),LAR(Q)]例子鏈,假設(shè)有當(dāng)前調(diào)用鏈?zhǔn)抢海∕,P,Q,R)為R的(M,P1,P2,Q1,R1,R2,R3
)則當(dāng)前動(dòng)態(tài)鏈為:[AR(M),AR(P1),AR(P2),AR(Q1),AR(R1),AR(R2),AR(R3)]R的當(dāng)前變量
環(huán)境:VarVisitEnv(LAR(R)
=[AR(M),AR(P2),AR(Q1),AR(R3)]非局部變量的實(shí)現(xiàn):環(huán)境:假設(shè)Q的變量VarVisitEnv(LAR(Q))=[LAR(M),…,LAR(P),LAR(Q)],在Q中有變量XQ,YM,ZP,它們分別定義在過程Q、M和P中,則它們的存儲(chǔ)單元地址可表示如下(其中<LAR(Q)>表示LAR(Q)的始地址,其它類似):addr(
XQ
)=
<LAR(Q)>
+
OffsetXaddr(
YM
)=
<LAR(M)>
+
OffsetYaddr
(
ZP
)=<LAR(P)>
+
Offsez結(jié)論:
對(duì)于每個(gè)AR,只要知道了它的變量
環(huán)境VarVisitEnv(AR),即可實(shí)現(xiàn)包括非局部變量在內(nèi)的所有變量的
?!?/p>
…BeginPEndPROC
Q;Begin…end…
…PROC
P;BeginQEndPROC
P;…
…PROC
QBegin
End…
…Begin
Q
EndPROC
Q;…
…PROC
P;Begin
QEndBegin
End情況1:況3 P調(diào)用Q P層數(shù)(N
1)小于Q層數(shù)(N)D情ee情況4:P調(diào)用Q,P層數(shù)大于Q層數(shù)(N).D
DeclaChain(Q)=(M,P1,P2,…,PN-1,
Q)DeclaChain(P)=
(M,P1,
P2,…,PN-1,Q,…,P)如何計(jì)算當(dāng)前過程的變量環(huán)境情況4情況3情況2情況1PROC
P;如何計(jì)算當(dāng)前過程的變量環(huán)境定理:設(shè)[AR(M),…,AR(P),AR(Q)]DynamicChain(Q),且Q的層數(shù)為N,則有:VarVisitEnv(AR(Q))=VarVisitEnv(AR(P))N
AR(Q)結(jié)論:變量
環(huán)境可由先行過程的變量
環(huán)境求得.變量
環(huán)境的實(shí)現(xiàn)方法Display表方法全局表法局部表法
靜態(tài)鏈方法局部Display表方法
對(duì)于每個(gè)AR求出其變量
環(huán)境,并把它以地址表的形式(Display表)保存在AR中。因?yàn)槊總€(gè)AR都自帶Display表,稱這種方法為局部化Display表方法。
如果層數(shù)為N的過程P的變量
環(huán)境為:VarVisitEnv(AR(P))=[AR0,…,ARn],ari表示ARi的始地址,則[ar0,…,arn]是AR(P)的Display表.Display表的求法NewAR.Display=CurrentAR.Display的前N項(xiàng)newsp動(dòng)態(tài)鏈指針…
…Display表…
…newsp動(dòng)態(tài)鏈指針…
…Display表…
…sp[ar0,ar1,…,arN-1,…][ar0,ar1,…,arN-1,newsp]例:有過程M,Q,R,S,其中l(wèi)evel(M)=0;level(Q)=1;level(R)=1;level(S)=2,各AR的Display表分別如下:Z單元ar0ar1newspX單元Y單元AR(M)
AR(Q)
AR(R)AR(S)ar1ar2ar0spDisplay表Off-DisplaXs=sp+offx;Yq=sp+initoff[Ly]+offy;局部Display表時(shí)變量的對(duì)一個(gè)變量X(L,off),地址為:當(dāng)L=CurrentAR.level時(shí):addr(X)=sp+off否則:addr(X)=CurrentAR.Display[L]+off即[sp+D+L]+off靜態(tài)鏈的方法問題的提出例:假設(shè)有調(diào)用鏈(M,G,H,R,S),并且有Level(M)=0,
Level(G)=1,
Level(H)=2,Level(R)=3,Level(S)=3則相應(yīng)動(dòng)態(tài)鏈的基本結(jié)構(gòu)應(yīng)如下:[
AR0(M),
AR1(G),
AR2(H),
AR3(R),
AR4(S)
]如果用局部Display表方法,則Display表情況如下:AR0(M).Display=[ar0
]AR1(G).Display=[ar0,ar1
]AR2(H).Display=[ar0,ar1
,
ar2]AR3(R).Display=[ar0,ar1,
ar2,ar3]AR4(S).Display=[ar0,ar1,ar2,ar4]靜態(tài)鏈的方法原Display表部分變成一個(gè)單元,稱為靜態(tài)鏈單元,存放靜態(tài)鏈指針。靜態(tài)鏈指針的確定:若k=CurrentAR.level+1-NewAR.level,則
NewAR.StaticChainPointer=Indir(sp,k)
其中Indir(sp,k)表示sp的k次間接內(nèi)容。nilnilspAR0(M)
AR1(G)
AR3(R)AR2(H)AR4(S)ar1ar2ar3ar4AR0(M).DisplayAR1(G).DisplayAR2(H).DisplayAR3(R).DisplayAR4(S).Display=[
ar0
]=[
ar0,
ar1
]=[
ar0,
ar1
,
ar2
]=[
ar0,
ar1,
ar2,
ar3]=[
ar0,
ar1,
ar2,ar4]Level(M)=0,
Level(G)=1,
Level(H)=2,Level(R)=3,Level(S)=3ar0虛線為靜態(tài)鏈指針實(shí)線為動(dòng)態(tài)鏈指針使用靜態(tài)鏈時(shí)變量的變量X(L,off)的地址:若L=CurrentAR.Level,則addr(X)=sp+off若L=CurrentAR.Level+1-k,則addr(X)=
Indir(sp,k)+
off全局Display表
每個(gè)程序設(shè)置一個(gè)總的Display表,其長度為最大嵌套層數(shù)(最長
鏈的長度),其中Display[i]存放第i層
AR的指針,用D[i]表示。該方法的理論依據(jù):在程序的任何一點(diǎn),相同層數(shù)的過程
只能有一個(gè)有效。在AR中設(shè)置一個(gè)Resume單元,用來臨時(shí)保存某D[i]全局Display表當(dāng)層數(shù)為j的過程Q被調(diào)用時(shí):將舊的D[j]的內(nèi)容保存到NewAR(Q)中:NewAR(Q).ResumeAddr
=
D[j];改寫D[j]的內(nèi)容:D[j]=NewAR(Q)的地址;當(dāng)退出Q時(shí):恢復(fù)原來D[j]的內(nèi)容:D[j]
=
CurrentAR.ResumeAddr局部變量X(L,off,indir/dir)的X的地址:addr(X)=
D[L]+off例P{Q{R}R{S{R}S}Q}設(shè)P為0層有如下調(diào)用鏈:PQRSR210P210QP210R(Q)QP210SR(Q)QP210R(R)SR(Q)QPAR(T)過程P
過程Q
過程R
過程S
過程T全局Displayproc
P;(設(shè)P層數(shù)為1)proc
Q;(Q層數(shù)為2)begin
R
endproc
R;(R層數(shù)為2)proc
S;(S層數(shù)為3)begin
T
endproc
T;(T層數(shù)為3)begin
X(1,off
)…xY(2,offy)
…Z(3,offz)…endbegin
S
endbegin
Q
end……arQAR(P)arparRAR(Q)arSAR(R)arT←spAR(S)arPSaarrTD(3)D(2)D(1)D(0)arRQ………Z(…3…,…of…f…z)……ars動(dòng)態(tài)鏈(控制鏈)指針…………動(dòng)態(tài)鏈(控制鏈)指針………Y(…2…,…of…f…y)……arQ動(dòng)態(tài)鏈(控制鏈)指針…………動(dòng)態(tài)鏈(控制鏈)指針……X…(…1…,o…f…f…x)……AR(R)AR(S)AR(T)主程序P
過程Q
過程
R
過程
S
過程T全局Displayproc
P;(設(shè)P層數(shù)為1)proc
Q;Q層數(shù)為2begin
R
endproc
R;R層數(shù)為2proc
S;S層數(shù)為3begin
T
endproc
T;T層數(shù)為3begin
…
endbegin
S
endbegin
Q
end表……AR(P)arparQarRAR(Q)arSarTarParTSD(3)D(2)D(1)D(0)arRQ……………a…r…………s動(dòng)態(tài)鏈(控制鏈)指針…………動(dòng)態(tài)鏈(控制鏈)指針……………ar……………動(dòng)態(tài)鏈(控Q制鏈)指針…………動(dòng)態(tài)鏈(控制鏈)指針…………總結(jié)Display表方法是用表結(jié)構(gòu)表示變量
環(huán)境。局部Display表的產(chǎn)生需要花時(shí)間,但返回時(shí)不需要為恢復(fù)變量
環(huán)境做任何事情。對(duì)于全局Display
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 世紀(jì)地理標(biāo)志的影響力試題及答案
- 2024年人力資源管理師完美備考試題及答案
- 餐飲服務(wù)的菜單創(chuàng)新計(jì)劃
- 提升旅游景區(qū)安全保障計(jì)劃
- 推進(jìn)日常運(yùn)營管理的工作計(jì)劃
- 個(gè)人財(cái)務(wù)教育的重要性與實(shí)踐計(jì)劃
- 人力資源管理與馬工學(xué)結(jié)合試題及答案
- 注重細(xì)節(jié)陪診師考試試題及答案
- 特許另類投資分析師考試實(shí)戰(zhàn)經(jīng)驗(yàn)試題及答案
- 2024年高中地理小尺度生態(tài)系統(tǒng)研究試題及答案
- 第九章-臨床輸血課件
- 單相獨(dú)立光伏發(fā)電系統(tǒng)設(shè)計(jì)
- 心內(nèi)科分層次培訓(xùn)計(jì)劃
- 魔幻泡泡秀七彩體驗(yàn)館介紹
- 表面工程學(xué)第十二章-表面微細(xì)加工技術(shù)
- 《阿房宮賦》理解性默寫試題與答案
- 山東大學(xué)工程流體力學(xué)(杜廣生)課件第5章 粘性流體的一維流動(dòng)
- 員工入職確認(rèn)單
- 初三優(yōu)秀學(xué)生座談會(huì)通用課件通用PPT課件
- T∕CAGHP 065.2-2019 地質(zhì)災(zāi)害防治工程工程量清單計(jì)價(jià)規(guī)范(試行)
- 室內(nèi)智能加濕器設(shè)計(jì)說明
評(píng)論
0/150
提交評(píng)論