資源描述:
《最新全口義齒-印模與模型.ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、全口義齒-印模與模型.第10章目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織學(xué)習(xí)目標(biāo):掌握:參數(shù)傳遞的幾種方式理解:靜態(tài)存儲(chǔ)分配、棧式動(dòng)態(tài)存儲(chǔ)分配、堆式動(dòng)態(tài)存儲(chǔ)分配的基本思想目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織存儲(chǔ)分配是在運(yùn)行階段進(jìn)行的;但編譯程序在編譯階段要為其設(shè)計(jì)好存儲(chǔ)組織形式,并將這種組織形式通過(guò)生成的目標(biāo)代碼體現(xiàn)出來(lái);運(yùn)行階段,隨著目標(biāo)代碼的運(yùn)行,數(shù)據(jù)的存儲(chǔ)組織形式便得以實(shí)現(xiàn)。目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織要解決的問(wèn)題:把靜態(tài)的源程序與程序運(yùn)行時(shí)的動(dòng)態(tài)活動(dòng)聯(lián)系起來(lái),即運(yùn)行中的程序信息是如何進(jìn)行存儲(chǔ)和訪問(wèn)的。在程序執(zhí)行過(guò)程中,程序中數(shù)據(jù)的存取是通過(guò)對(duì)應(yīng)的存儲(chǔ)單元來(lái)進(jìn)行的存儲(chǔ)組織就是要在編譯階段為源程序中
2、出現(xiàn)的用戶定義的變量與常量、臨時(shí)工作單元、過(guò)程或函數(shù)調(diào)用時(shí)需要的連接單元與返回地址等分配其在運(yùn)行階段的存儲(chǔ)空間10.1運(yùn)行時(shí)的存儲(chǔ)空間結(jié)構(gòu)10.2運(yùn)行時(shí)的存儲(chǔ)空間分配10.3參數(shù)傳遞10.1運(yùn)行時(shí)的存儲(chǔ)空間結(jié)構(gòu)當(dāng)程序運(yùn)行時(shí),存儲(chǔ)區(qū)的內(nèi)容包括:目標(biāo)代碼目標(biāo)代碼的大小在編譯時(shí)可以靜態(tài)確定,因此可以把它放在靜態(tài)確定的區(qū)域;目標(biāo)代碼運(yùn)行時(shí)的數(shù)據(jù)空間數(shù)據(jù)空間包括:用戶定義的各種類型的數(shù)據(jù)對(duì)象;臨時(shí)工作單元;輸入/輸出緩沖區(qū)等數(shù)據(jù)空間有三種組織形式:靜態(tài)數(shù)據(jù)區(qū)、棧區(qū)和堆區(qū)目標(biāo)代碼區(qū)靜態(tài)數(shù)據(jù)區(qū)棧區(qū)堆區(qū)目標(biāo)代碼區(qū)(code);靜態(tài)數(shù)據(jù)區(qū)(staticdata):用于存放編譯時(shí)能確定所占
3、用空間的數(shù)據(jù),如全局變量和靜態(tài)變量堆棧區(qū)(stackandheap):用于存放編譯時(shí)不能確定所占用空間的數(shù)據(jù),如可變數(shù)據(jù)以及管理過(guò)程活動(dòng)的控制信息運(yùn)行時(shí)的存儲(chǔ)空間結(jié)構(gòu)如下:自由空間10.2運(yùn)行時(shí)的存儲(chǔ)空間分配影響分配策略的因素:源語(yǔ)言的結(jié)構(gòu)特點(diǎn)源語(yǔ)言的數(shù)據(jù)類型源語(yǔ)言中決定名字作用域的規(guī)則編譯器具體實(shí)現(xiàn)時(shí),采用如下三種分配策略之一或三種的混合形式。這三種方式是:靜態(tài)存儲(chǔ)分配棧式動(dòng)態(tài)存儲(chǔ)分配堆式動(dòng)態(tài)存儲(chǔ)分配10.2.1靜態(tài)存儲(chǔ)分配指在編譯時(shí)對(duì)數(shù)據(jù)對(duì)象分配固定的存儲(chǔ)位置,運(yùn)行時(shí)始終不變。即一旦存儲(chǔ)空間的某個(gè)位置分配給了某個(gè)數(shù)據(jù)名,則在目標(biāo)程序的整個(gè)運(yùn)行過(guò)程中,此位置(地址)就
4、屬于該數(shù)據(jù)名。由靜態(tài)存儲(chǔ)分配產(chǎn)生的數(shù)據(jù)區(qū)稱為靜態(tài)數(shù)據(jù)區(qū)。靜態(tài)存儲(chǔ)分配適用于不允許遞歸過(guò)程或遞歸調(diào)用,不允許可變體積的數(shù)據(jù)結(jié)構(gòu)的語(yǔ)言靜態(tài)存儲(chǔ)分配的特點(diǎn):簡(jiǎn)單、易于實(shí)現(xiàn)例:FORTRAN語(yǔ)言,它所有的數(shù)據(jù)都屬于這一類。例:FORTRAN程序主程序段ProgramCNSUME……子程序段CharacterfunctionPRDUCE()……PRDUCE的數(shù)據(jù)區(qū)CNSUME的數(shù)據(jù)區(qū)PRDUCE的目標(biāo)代碼CNSUME的目標(biāo)代碼代碼區(qū)靜態(tài)數(shù)據(jù)區(qū)10.2.2動(dòng)態(tài)存儲(chǔ)分配指在運(yùn)行階段動(dòng)態(tài)地為源程序中的數(shù)據(jù)對(duì)象分配存儲(chǔ)位置實(shí)行動(dòng)態(tài)存儲(chǔ)分配的語(yǔ)言的特點(diǎn):允許遞歸過(guò)程允許可變數(shù)據(jù)結(jié)構(gòu)(可變數(shù)
5、組或記錄等)允許用戶自由申請(qǐng)和釋放空間這種程序在編譯時(shí)無(wú)法確定運(yùn)行時(shí)所需數(shù)據(jù)空間的大小,需待程序運(yùn)行時(shí)動(dòng)態(tài)確定有兩種動(dòng)態(tài)存儲(chǔ)分配方式:棧式(stack)、堆式(heap)。10.2.3棧式動(dòng)態(tài)存儲(chǔ)分配在數(shù)據(jù)空間中開辟一個(gè)棧區(qū),每當(dāng)調(diào)用一個(gè)過(guò)程時(shí),它所需要的數(shù)據(jù)空間就分配在棧頂,每當(dāng)過(guò)程工作結(jié)束時(shí)就釋放這部分空間??臻g的使用符合先借后還的原則。特點(diǎn):先借后還,管理簡(jiǎn)單,空間使用效率高棧式動(dòng)態(tài)存儲(chǔ)分配適合于PASCAL、C等典型過(guò)程式語(yǔ)言。Programmain;全局變量定義;ProcedureR;…End(R);ProcedureQ;…End(Q);主程序執(zhí)行體End.(
6、main)若主程序調(diào)用Q,Q遞歸調(diào)用自己,在Q第二次進(jìn)入運(yùn)行后的存儲(chǔ)結(jié)構(gòu)為:Q的數(shù)據(jù)區(qū)Q的數(shù)據(jù)區(qū)主程序全局?jǐn)?shù)據(jù)區(qū)代碼區(qū)棧區(qū)10.2.4堆式動(dòng)態(tài)存儲(chǔ)分配在數(shù)據(jù)空間中開辟一片連續(xù)的存儲(chǔ)區(qū)(通常叫做堆),每當(dāng)需要時(shí)就從這片空間借用一塊,不用時(shí)再退還。借用與歸還未必服從“先借后還”的原則。堆式動(dòng)態(tài)存儲(chǔ)分配適合于用戶可以自由申請(qǐng)和歸還數(shù)據(jù)空間的語(yǔ)言,如C++。特點(diǎn):適用范圍廣,容易出現(xiàn)碎片。如何充分利用空間是個(gè)難題。作為存儲(chǔ)分配組織的一個(gè)原則,能在編譯時(shí)完成的存儲(chǔ)分配盡量采用靜態(tài)分配方案,避免目標(biāo)程序中攜帶許多用于存儲(chǔ)分配的指令,以提高目標(biāo)代碼的效率。10.3參數(shù)傳遞過(guò)程(函數(shù))
7、是結(jié)構(gòu)化程序設(shè)計(jì)的主要手段,同時(shí)也是節(jié)省程序代碼和擴(kuò)充語(yǔ)言能力的主要途徑。當(dāng)一個(gè)過(guò)程調(diào)用其他過(guò)程時(shí),調(diào)用與被調(diào)用之間的通信或者通過(guò)全局量,或者由參數(shù)傳遞。掌握編譯器使用的參數(shù)傳遞的方法很重要,它們直接影響程序運(yùn)行的結(jié)果。過(guò)程定義procedureSWAP(n,m:real);varj:real;beginj:=n;n:=m;m:=jend;參數(shù)傳遞的例子:主程序i:=5;k[i]:=6;SWAP(i,k[i]);過(guò)程調(diào)用…1.參數(shù)參數(shù)過(guò)程定義中的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參。過(guò)程調(diào)用中的參數(shù)稱為實(shí)在參數(shù),簡(jiǎn)稱實(shí)參。實(shí)參可以是變量、常量或較復(fù)