




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章目標(biāo)程序運(yùn)行時(shí)的
存儲(chǔ)組織
10.1概述10.2棧式存儲(chǔ)分配的實(shí)現(xiàn)10.3參數(shù)傳遞10.4過程調(diào)用、過程進(jìn)入和過程返回教學(xué)內(nèi)容:教學(xué)方式:
講授式+啟發(fā)式教學(xué)目的:1、介紹目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織方式,包括靜態(tài)存儲(chǔ)分配和動(dòng)態(tài)存儲(chǔ)分配。2、要求掌握各種存儲(chǔ)組織形式的基本方法。教學(xué)重點(diǎn):
1、靜態(tài)分配策略和動(dòng)態(tài)分配策略基本思想。
2、嵌套過程語言棧式分配。
3、活動(dòng)記錄、運(yùn)行時(shí)棧的組織。教學(xué)難點(diǎn):1、嵌套過程語言棧式分配。2、活動(dòng)記錄、運(yùn)行時(shí)棧的組織。教學(xué)時(shí)數(shù):
2學(xué)時(shí)
10.1概述任務(wù):編譯程序?qū)δ繕?biāo)程序運(yùn)行時(shí)的數(shù)據(jù)空間的組織和管理(設(shè)計(jì)運(yùn)行環(huán)境和分配存儲(chǔ))如通常存儲(chǔ)分配布局可為:
目標(biāo)代碼區(qū)
靜態(tài)數(shù)據(jù)區(qū)
Stackheap 運(yùn)行環(huán)境和存儲(chǔ)分配設(shè)計(jì)分析邏輯階段:在目標(biāo)代碼生成前,作準(zhǔn)備實(shí)質(zhì):
關(guān)聯(lián)(Binding)將源程序的文本程序運(yùn)行動(dòng)作的實(shí)現(xiàn)源文件中的名字N
運(yùn)行時(shí)的存儲(chǔ)S在語義學(xué)中,使用術(shù)語environment函數(shù)表示env:N→S(N到S的映射)術(shù)語語靜態(tài)態(tài)::如如果果一一個(gè)個(gè)名名字字的的性性質(zhì)質(zhì)通通過過說說明明語語句句或或隱隱或或顯顯規(guī)規(guī)則則而而定定義義,,則則稱稱這這種種性性質(zhì)質(zhì)是是““靜靜態(tài)態(tài)””確確定定的的。。動(dòng)態(tài)態(tài)::如如果果名名字字的的性性質(zhì)質(zhì)只只有有在在程程序序運(yùn)運(yùn)行行時(shí)時(shí)才才能能知知道道,,則則稱稱這這種種性性質(zhì)質(zhì)為為““動(dòng)動(dòng)態(tài)態(tài)””確確定定的的。??勺冏?動(dòng)態(tài)態(tài))數(shù)組組::若一一個(gè)個(gè)數(shù)數(shù)組組所所需需的的存存儲(chǔ)儲(chǔ)空空間間的的大大小小在在編編譯譯時(shí)時(shí)就就已已知知道道,,則則稱稱它它為為確確定定數(shù)數(shù)組組,,否否則則稱稱為為可可變變(動(dòng)態(tài)態(tài))數(shù)組組。。例procedureA(m,n:integer);beginrealz;arrayB[m:n];begin···end;end;10.2棧式式存存儲(chǔ)儲(chǔ)分分配配的的實(shí)實(shí)現(xiàn)現(xiàn)1、簡(jiǎn)簡(jiǎn)單單的的棧棧式式存存儲(chǔ)儲(chǔ)分分配配的的實(shí)實(shí)現(xiàn)現(xiàn)2、嵌嵌套套過過程程語語言言的的棧棧式式實(shí)實(shí)現(xiàn)現(xiàn)3、分分程程序序結(jié)結(jié)構(gòu)構(gòu)的的存存儲(chǔ)儲(chǔ)管管理理1、簡(jiǎn)簡(jiǎn)單單的的棧棧式式分分配配方方案案程序序結(jié)結(jié)構(gòu)構(gòu)特特點(diǎn)點(diǎn):沒有有分分程程序序結(jié)結(jié)構(gòu)構(gòu),,過過程程定定義義不不嵌嵌套套,,過過程程可可遞遞歸歸調(diào)調(diào)用用。。例:main全局局變變量量的的說說明明procR………endR;procQ………endQ;主程程序序執(zhí)執(zhí)行行語語句句endmain2、嵌嵌套套過過程程語語言言的的棧棧式式分分配配方方案案主要要特特點(diǎn)點(diǎn):(語語言言))一一個(gè)個(gè)過過程程可可以以引引用用包包圍圍它它的的任任一一外外層層過過程程所所定定義義的的標(biāo)標(biāo)識(shí)識(shí)符符((如如變變量量,,數(shù)數(shù)組組或或過過程程等等))。。(實(shí)實(shí)現(xiàn)現(xiàn)))一一個(gè)個(gè)過過程程可可以以引引用用它它的的任任一一外外層層過過程程的的最最新新活活動(dòng)動(dòng)記記錄錄中中的的某某些些數(shù)數(shù)據(jù)據(jù)。。關(guān)鍵鍵技技術(shù)術(shù)::解解決決對(duì)對(duì)非非局局部部量量的的引引用用((存存取取))。。設(shè)法法跟跟蹤蹤每每個(gè)個(gè)外外層層過過程程的的最最新新活活動(dòng)動(dòng)記記錄錄AR的位位置置。。跟蹤蹤辦辦法法::1.用靜靜態(tài)態(tài)鏈鏈((如如PL/0的SL)。。2.用DISPLAY表。。DISPLAY表的的維維護(hù)護(hù)和和建建立立DISPLAY表d運(yùn)行行棧棧0主程程序序活活動(dòng)動(dòng)記記錄錄地地址址1R活動(dòng)動(dòng)記記錄錄地地址址DISPLAY表是是一一個(gè)個(gè)指指針針數(shù)數(shù)組組d(小小棧棧)),,自自頂頂向向下下每每個(gè)個(gè)單單元元依依次次存存放放現(xiàn)現(xiàn)行行層層,,直直接接外外層層,,………直至至最最外外層層((0層))等等每每層層的的最最新新活活動(dòng)動(dòng)記記錄錄地地址址。。...用Display表的的方方案案(1)主程程序序--->(2)P--->(3)Q--->(4)RP的活動(dòng)動(dòng)記記錄錄主程程序序的的活動(dòng)動(dòng)記記錄錄d[1]d[0]displaysptop主程程序序的的活動(dòng)動(dòng)記記錄錄d[0]spdisplaytop(1)(2)用Display表的方案案主程序--->P--->Q--->RR的活動(dòng)記錄錄Q的活動(dòng)記錄錄P的活動(dòng)記錄錄主程序的的活動(dòng)記錄錄Q的活動(dòng)記錄錄P的活動(dòng)記錄錄主程序的的活動(dòng)記錄錄displayd[2]d[1]d[0]d[1]d[0]displaysptoptopsp(3)(4)當(dāng)過程的的層次為為n,它的display為n+1個(gè)值。一個(gè)過程程被調(diào)用用時(shí),從從調(diào)用過過程的DISPLAY表中自下下向上抄抄錄n個(gè)SP值,再加加上本層層的SP值。全局DISPLAY地址Display作為活動(dòng)動(dòng)記錄的的一部分分ProcedureA(m,n);integerm,n;B1:beginrealz;arrayB[m:n];B2:beginreald,e;L3:2end;B4:beginarrayC[1:m];1B5:beginreale;L6:54end;end;L8:end;3、分程序序結(jié)構(gòu)的的存儲(chǔ)配配方案處理分程程序結(jié)構(gòu)構(gòu)存儲(chǔ)分分配方案案的一種種簡(jiǎn)單辦辦法是,,把分程程序看成成“無無參過程程”,,它在哪哪里定義義就在哪哪里被調(diào)調(diào)用。因因此,可可以把處處理過程程的存儲(chǔ)儲(chǔ)辦法應(yīng)應(yīng)用到處處理分程程序中。。但這種種做法是是極為低低效的。。一則,每每逢進(jìn)入入一個(gè)個(gè)分程序序,就照照樣建立立連接數(shù)數(shù)據(jù)和DISPLAY表,這是不必必要的。。二二則,,當(dāng)從內(nèi)內(nèi)層分程程序向外外層轉(zhuǎn)移移時(shí),可可能同時(shí)時(shí)要結(jié)束束若干個(gè)個(gè)分程序序。按照過程程處理辦辦法,意意味著必必須一層層一層地地通過““返回””來恢恢復(fù)所要要到達(dá)的的那個(gè)分分程序的的數(shù)據(jù)區(qū)區(qū),但不不能直接接到達(dá)。。例如:如如果有一一個(gè)從第第5層分程序序轉(zhuǎn)出到到達(dá)第1層分程序序的標(biāo)號(hào)號(hào)L,雖然在在第5層分程序序工作時(shí)時(shí)知道L所屬的層層數(shù),我我們極易易從DISPLAY中獲得第第1層分程序序的活動(dòng)動(dòng)記錄基基址(SP),但是是怎么知知道第1層分程序序進(jìn)入時(shí)時(shí)的TOP呢?唯一一的辦法法是從5,4,3和2各層順序序退出。。但這種種辦法是是很浪費(fèi)費(fèi)時(shí)間的的。為了解決決上述問問題,可可采取兩兩種措施施。第一一,對(duì)每每個(gè)過程程或分程程序都建建立有自自己的棧棧頂指示示器TOP,代替原原來僅有有過程的的棧頂指指示器,每個(gè)TOP的值保存存在各自自活動(dòng)記記錄中。。這樣,,上述的的第二個(gè)個(gè)問題便便可解決決。第二二,不把把分程序序看作““無參過過程”,,每個(gè)分分程序享享用包圍圍它的那那個(gè)最近近過程的的DISPLAY。每個(gè)分分程序都都隸屬于于某個(gè)確確定的過過程,分分程序的的層次是是相對(duì)于于它所屬屬的那個(gè)個(gè)過程進(jìn)進(jìn)行編號(hào)號(hào)的。每個(gè)過程程被當(dāng)作作是0層分程序序。而過過程體分分程序((假定是是一個(gè)分分程序))當(dāng)作是是它所管管轄的第第1層分程序序。這樣,每每個(gè)過程程的活動(dòng)動(dòng)記錄所所含的內(nèi)內(nèi)容有::1.過程的TOP值,它指指向過程程活動(dòng)記記錄的棧棧頂位置置。2.連接數(shù)據(jù)據(jù),共四四項(xiàng):(1)老SP值;(2)返回地址址;(3)全局DISPAY地址;(4)調(diào)用時(shí)的的棧頂單單元地址址,老TOP。3.參數(shù)個(gè)數(shù)數(shù)和形式式單元4.DISPAY表。5.過程所轄轄的各分分程序的的局部數(shù)數(shù)據(jù)單元元。對(duì)對(duì)于于每個(gè)分分程序來來說,它它們包括括:(1)分程序的的TOP值。當(dāng)進(jìn)進(jìn)入分程程序時(shí)它它含現(xiàn)行行棧頂?shù)氐刂?,以以后,用用來定義義棧的新新高度((分程序序的TOP值);(2)分程序的的局部變變量,數(shù)數(shù)組內(nèi)內(nèi)情向量量和臨時(shí)時(shí)工作單單元。BZB1TO
數(shù)
組B
數(shù)
組B
e
dB22的TOPB的
內(nèi)
情
向
量B的
內(nèi)
情
向
量
z
zB1的TOPB1的TOPDISPLAYDISPLAY形式單元元m,n2形式單元元m,n2連接數(shù)據(jù)連接數(shù)據(jù)A的TOPA的TOP∶∶∶∶(c)(d)(c)數(shù)組B分配之后后;(d)進(jìn)入分分程序B22;10.3參數(shù)傳遞遞(1)procedureexchangel(i,j:integer);(2)varx:integer;(3)begin;(4)x:=a[i];a[i]:=a[j];a[j]:=x(5)end;帶有非局局部變量量和形參參的PASCAL過程非局變量量a[i]和a[j]的值進(jìn)行交交換,i,j為形參((在這里里是傳值值)(1)programreference(input,output);(2)vara,b:integer;(3)procedureswap({var}x,y:integer);(4)vartemp:integer;(5)begin(6)temp:=x;(7)x:=y;(8)y:=temp(9)end;(10)begin(11)a:=1;b:=2;(12)swap(a,b);(13)writeln(‘a(chǎn)=‘,a);writeln(‘b=‘,b)(14)end.帶有過程程swap的PASCAL程序傳地址((變量參參數(shù))例如:過過程swap(varx,y:integer);swap(a,b);(a,b為調(diào)用時(shí)的的實(shí)參))調(diào)用結(jié)果果a,b的值被改改變。傳值(值值調(diào)用))特點(diǎn)是對(duì)對(duì)形式參參數(shù)的任任何運(yùn)算算不影響響實(shí)參的的值。例如:過過程swap(x,y:integer);swap(a,b);其結(jié)果::a,b調(diào)用前的的值不改改變。傳值的實(shí)現(xiàn)1.形式參數(shù)數(shù)當(dāng)作過過程的局局部變量量處理,,即在被被調(diào)過程程的活動(dòng)動(dòng)記錄中中開辟了了形參的的存儲(chǔ)空空間,這這些存儲(chǔ)儲(chǔ)位置即即是我們們所說的的形式單單元(用用以存放放實(shí)參))。2.調(diào)用過程程計(jì)算實(shí)實(shí)參的值值,并將將其放在在對(duì)應(yīng)形形式單元元開辟的的空間中中。3.被調(diào)用過過程執(zhí)行行時(shí),就就像使用用局部變變量一樣樣使用這這些形式式單元。。procedureswap(x,y:integer);vartemp:integer;begintemp:=x;x:=y;y:=tempend;調(diào)用swap(a,b)過程將不不會(huì)影響響a和b的值。其其結(jié)果等等價(jià)于執(zhí)執(zhí)行下列列運(yùn)算::x:=a;y:=b;temp:=x;x:=y;y:=temp傳地址的實(shí)現(xiàn)(call-by-reference)(call-by-address)(call-by-location)把實(shí)在參參數(shù)的地地址傳遞遞給相應(yīng)應(yīng)的形參參,即調(diào)用過程程把一個(gè)個(gè)指向?qū)崒?shí)參的存存儲(chǔ)地址址的指針針傳遞給給被調(diào)用用過程相相應(yīng)的形形參:1實(shí)在參數(shù)數(shù)是一個(gè)個(gè)名字,,或具有有左值的的表達(dá)式式----傳遞左值值2實(shí)在參數(shù)數(shù)是無左左值的表表達(dá)式----計(jì)算值,,放入一一存儲(chǔ)單單元,傳傳此存儲(chǔ)儲(chǔ)單元地地址3目標(biāo)代碼碼中,被被調(diào)用過過程對(duì)形形參的引引用變成成對(duì)傳遞遞給被調(diào)調(diào)用過程程的指針針的間接接引用procedureswap(x,y:integer);vartemp:integer;begintemp:=x;x:=y;y:=tempend;調(diào)用swap(i,a[i])其結(jié)果等等價(jià)于執(zhí)執(zhí)行下列列運(yùn)算::1把I和a[i]的地址分分別放到到x和y相應(yīng)的單單元a1,a22(temp:=x;)temp的內(nèi)容置置為a1所指單元元中存的的內(nèi)容3(x:=y;)a1所指單元元的內(nèi)容置置為a2所指單元元值4(y:=temp)a2所指單元元的內(nèi)容置置為temp的值(1)swap(x,y)(2)int*x,*y;(3){inttemp;(4)temp=*x;*x=*y;*y=temp;(5)}(6)main()(7){inta=1,b=2;(8)swap(&a,&b);(9)printf(“aisnow%d,bisnow%d\n””,a,b);(10)}在一個(gè)值值調(diào)用過過程中使使用指針針的C程序在C程序中無無傳地址址所以用用指針實(shí)實(shí)現(xiàn)。過程調(diào)用用的四元元式序列列Scallid(<arglist>)<arglist><arglist>,E<arglist>EparT1parT2parTncallid,n過程作為為參數(shù)傳傳遞三種環(huán)境境:詞法法環(huán)境傳遞環(huán)境境活動(dòng)環(huán)境境programparam(input,output);procedureb(functionh(n:integer):integer);(*)varm:integer;beginm:=3;writeln(h(2))end;procedurec;(*)varm:integer;functionf(n:integer):integr;(&)beginf:=m+nend{f};beginm:=0;b(f)end{c}begincend.(1)programparam(input,output);(2)procedureb(functionh(n:integer):integer);(3)beginwriteln(h(2))end;(4)procedurec;(5)varm:integer;(6)functionf(n:integer):integr;(7)beginf:=m+nend{f};(8)beginm:=0;b(f)end{c};(9)begin(10)c(11)end圖10-27嵌套過程程作為參參數(shù)傳遞遞各種數(shù)據(jù)據(jù)對(duì)象的的存儲(chǔ)分分配數(shù)據(jù)對(duì)象象name名字,名名稱type類型location內(nèi)存地址址value值component成分除實(shí)參是是過程情情況外,,還有實(shí)實(shí)參為數(shù)數(shù)組,實(shí)實(shí)參為標(biāo)標(biāo)號(hào)等情情況。10.4過程調(diào)用用、過程程進(jìn)入和和過程返返回9、靜夜四無鄰鄰,荒居舊業(yè)業(yè)貧。。12月-2212月-22Sunday,December25,202210、雨中黃葉樹樹,燈下白頭頭人。。22:31:2322:31:2322:3112/25/202210:31:23PM11、以我獨(dú)沈沈久,愧君君相見頻。。。12月-2222:31:2322:31Dec-2225-Dec-2212、故人江海海別,幾度度隔山川。。。22:31:2322:31:2322:31Sunday,December25,202213、乍見翻疑疑夢(mèng),相悲悲各問年。。。12月-2212月-2222:31:2322:31:23December25,202214、他他鄉(xiāng)鄉(xiāng)生生白白發(fā)發(fā),,舊舊國國見見青青山山。。。。25十十二二月月202210:31:23下下午午22:31:2312月月-2215、比比不不了了得得就就不不比比,,得得不不到到的的就就不不要要。。。。。十二二月月2210:31下下午午12月月-2222:31December25,202216、行行動(dòng)動(dòng)出出成成果果,,工工作作出出財(cái)財(cái)富富。。。。2022/12/2522:31:2322:31:2325December202217、做前前,能能夠環(huán)環(huán)視四四周;;做時(shí)時(shí),你你只能能或者者最好好沿著著以腳腳為起起點(diǎn)的的射線線向前前。。。10:31:23下下午午10:31下下午22:31:2312月月-229、沒有有失敗敗,只只有暫暫時(shí)停停止成成功??!。12月月-2212月月-22Sunday,December25,202210、很多多事情情努力力了未未必有有結(jié)果果,但但是不不努力力卻什什么改改變也也沒有有。。。22:31:2322:31:2322:3112/25/202210:31:23PM11、成功功就是是日復(fù)復(fù)一日日那一一點(diǎn)點(diǎn)點(diǎn)小小小努力力的積積累。。。12月月-2222:31:2322:31Dec-2225-Dec-2212、世間間成事事,不不求其其絕對(duì)對(duì)圓滿滿,留留一份份不足足,可可得無無限完完美。。。22:31:2322:31:2322:31Sunday,December25,202213、不知香香積寺,,數(shù)里入入云峰。。。12月-2212月-2222:31:2322:31:23December25,202214、意志堅(jiān)堅(jiān)強(qiáng)的人人能把世世界放在在手中像像泥塊一一樣任意意揉捏。。25十十二月202210:31:23下下午22:31:2312月-2215、楚塞三湘接接,荊門九派派通。。。十二月2210:31下下午12月-2222:31December25,202216、少年十五二二十時(shí),步行行奪得胡馬騎騎。。2022/12/2522:31:2322:31:2325Decem
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售學(xué)校學(xué)區(qū)房合同范本
- 一建培訓(xùn)合同范本
- 年度供貨合同范本
- 供銷總社采購合同范例
- 勞動(dòng)工人合同范本
- 公司合作簽合同范本
- 中央新風(fēng)合同范本
- 加盟飯店合同范本
- 中介房租合同范本
- app項(xiàng)目轉(zhuǎn)讓合同范本
- 社會(huì)階層與教育選擇行為分析-深度研究
- 社會(huì)工作行政(第三版)課件匯 時(shí)立榮 第6-11章 項(xiàng)目管理- 社會(huì)工作行政的挑戰(zhàn)、變革與數(shù)字化發(fā)展
- 學(xué)校小賣部承包合同范文
- 2025年湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫含答案解析
- 2025年湖南鐵道職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫含答案解析
- DB 63- T993-2011 三江源生態(tài)監(jiān)測(cè)技術(shù)規(guī)范
- 北京市東城區(qū)2025年公開招考539名社區(qū)工作者高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025福建福州地鐵集團(tuán)限公司運(yùn)營分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025至2030年中國電子護(hù)眼臺(tái)燈數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 兒童睡眠障礙治療
- 2025年浙江省溫州樂清市融媒體中心招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論