




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章目標程序運行時的存儲組織學習目標:掌握: 參數(shù)傳遞的幾種方式理解: 靜態(tài)存儲分配、棧式動態(tài)存儲分配、 堆式動態(tài)存儲分配的基本思想目標程序運行時的存儲組織存儲分配是在運行階段進行的;但編譯程序在編譯階段要為其設計好存儲組織形式,并將這種組織形式通過生成的目標代碼體現(xiàn)出來;運行階段,隨著目標代碼的運行,數(shù)據(jù)的存儲組織形式便得以實現(xiàn)。目標程序運行時的存儲組織要解決的問題:把靜態(tài)的源程序與程序運行時的動態(tài)活動聯(lián)系起來,即運行中的程序信息是如何進行存儲和訪問的。在程序執(zhí)行過程中,程序中數(shù)據(jù)的存取是通過對應的存儲單元來進行的 存儲組織就是要在編譯階段為源程序中出現(xiàn)的用戶定義的變量與常量、臨時工作單元、過程或函數(shù)調用時需要的連接單元與返回地址等分配其在運行階段的存儲空間10.1運行時的存儲空間結構10.2 運行時的存儲空間分配10.3 參數(shù)傳遞10.1運行時的存儲空間結構當程序運行時,存儲區(qū)的內容包括:目標代碼 目標代碼的大小在編譯時可以靜態(tài)確定,因此可以把它放在靜態(tài)確定的區(qū)域;目標代碼運行時的數(shù)據(jù)空間數(shù)據(jù)空間包括:用戶定義的各種類型的數(shù)據(jù)對象;臨時工作單元;輸入/輸出緩沖區(qū)等數(shù)據(jù)空間有三種組織形式:靜態(tài)數(shù)據(jù)區(qū)、棧區(qū)和堆區(qū) 目標代碼區(qū)
靜態(tài)數(shù)據(jù)區(qū)棧區(qū)堆區(qū)目標代碼區(qū)(code);靜態(tài)數(shù)據(jù)區(qū)(staticdata):用于存放編譯時能確定所占用空間的數(shù)據(jù),如全局變量和靜態(tài)變量堆棧區(qū)(stackandheap):用于存放編譯時不能確定所占用空間的數(shù)據(jù),如可變數(shù)據(jù)以及管理過程活動的控制信息運行時的存儲空間結構如下:自由空間10.2運行時的存儲空間分配影響分配策略的因素:源語言的結構特點源語言的數(shù)據(jù)類型源語言中決定名字作用域的規(guī)則編譯器具體實現(xiàn)時,采用如下三種分配策略之一或三種的混合形式。這三種方式是:靜態(tài)存儲分配棧式動態(tài)存儲分配堆式動態(tài)存儲分配10.2.1靜態(tài)存儲分配指在編譯時對數(shù)據(jù)對象分配固定的存儲位置,運行時始終不變。即一旦存儲空間的某個位置分配給了某個數(shù)據(jù)名,則在目標程序的整個運行過程中,此位置(地址)就屬于該數(shù)據(jù)名。由靜態(tài)存儲分配產生的數(shù)據(jù)區(qū)稱為靜態(tài)數(shù)據(jù)區(qū)。靜態(tài)存儲分配適用于不允許遞歸過程或遞歸調用,不允許可變體積的數(shù)據(jù)結構的語言靜態(tài)存儲分配的特點:簡單、易于實現(xiàn)例:FORTRAN語言,它所有的數(shù)據(jù)都屬于這一類。例:FORTRAN程序P232主程序段ProgramCNSUME……子程序段CharacterfunctionPRDUCE()……PRDUCE的數(shù)據(jù)區(qū)CNSUME的數(shù)據(jù)區(qū)PRDUCE的目標代碼CNSUME的目標代碼代碼區(qū)靜態(tài)數(shù)據(jù)區(qū)段結構,各程序段定義的名字彼此獨立,各段的數(shù)據(jù)對象的作用域獨立,無相互引用、賦值。10.2.2動態(tài)存儲分配指在運行階段動態(tài)地為源程序中的數(shù)據(jù)對象分配存儲位置實行動態(tài)存儲分配的語言的特點:允許遞歸過程允許可變數(shù)據(jù)結構(可變數(shù)組或記錄等)允許用戶自由申請和釋放空間 這種程序在編譯時無法確定運行時所需數(shù)據(jù)空間的大小,需待程序運行時動態(tài)確定有兩種動態(tài)存儲分配方式:棧式(stack)、堆式(heap)。10.2.3棧式動態(tài)存儲分配在數(shù)據(jù)空間中開辟一個棧區(qū),每當調用一個過程時,它所需要的數(shù)據(jù)空間就分配在棧頂,每當過程工作結束時就釋放這部分空間??臻g的使用符合先借后還的原則。特點:先借后還,管理簡單,空間使用效率高棧式動態(tài)存儲分配適合于PASCAL、C等典型過程式語言。Programmain;全局變量定義;ProcedureR;…End(R);ProcedureQ;…End(Q);主程序執(zhí)行體End.(main)若主程序調用Q,Q遞歸調用自己,在Q第二次進入運行后的存儲結構為:Q的數(shù)據(jù)區(qū)Q的數(shù)據(jù)區(qū)主程序全局數(shù)據(jù)區(qū)代碼區(qū)棧區(qū)More…..P23510.2.4堆式動態(tài)存儲分配在數(shù)據(jù)空間中開辟一片連續(xù)的存儲區(qū)(通常叫做堆),每當需要時就從這片空間借用一塊,不用時再退還。借用與歸還未必服從“先借后還”的原則。堆式動態(tài)存儲分配適合于用戶可以自由申請和歸還數(shù)據(jù)空間的語言,如C++。特點:適用范圍廣,容易出現(xiàn)碎片。如何充分利用空間是個難題。作為存儲分配組織的一個原則,能在編譯時完成的存儲分配盡量采用靜態(tài)分配方案,避免目標程序中攜帶許多用于存儲分配的指令,以提高目標代碼的效率。10.3參數(shù)傳遞過程(函數(shù))是結構化程序設計的主要手段,同時也是節(jié)省程序代碼和擴充語言能力的主要途徑。當一個過程調用其他過程時,調用與被調用之間的通信或者通過全局量,或者由參數(shù)傳遞。掌握編譯器使用的參數(shù)傳遞的方法很重要,它們直接影響程序運行的結果。過程定義procedureSWAP(n,m:real);varj:real;begin
j:=n;n:=m;m:=jend;參數(shù)傳遞的例子:主程序i:=5;k[i]:=6;SWAP(i,k[i]);過程調用…1.參數(shù)參數(shù)過程定義中的參數(shù)稱為形式參數(shù),簡稱形參。過程調用中的參數(shù)稱為實在參數(shù),簡稱實參。實參可以是變量、常量或較復雜的表達式,應與相應的形參在性質上相容。參數(shù)傳遞常用的三種途徑:
傳值(callbyvalue),也稱值調用
傳地址(callbyreference),也稱引用調用
傳名(callbyname),也稱“換名”2.傳值將實參的值計算出來,然后把它傳給被調過程傳值的實現(xiàn):1.在被調過程的數(shù)據(jù)空間中為每個形參開辟一個形式單元(用以存放相應的實參值)。2.調用過程計算實參的值,并將其值放在對應的形式單元中。3.被調用過程執(zhí)行時,每當訪問(引用或賦值)形參時都處理成對形式單元的直接訪問。特點: 對形式參數(shù)的任何運算不影響調用過程中的實參的值例過程定義
procedureSWAP(n,m:real);varj:real;begin j:=n;n:=m;m:=jend;主程序i:=5;k[i]:=6;SWAP(i,k[i]);過程調用過程調用時,有(假設i的地址為add_i)調用者數(shù)據(jù)區(qū)add_iadd_K[5]65執(zhí)行了語句”j:=n;n:=m;m:=j”后調用者數(shù)據(jù)區(qū)add_iadd_K[5]65結果:i=5,k[5]=6不變,未交換被調用者數(shù)據(jù)區(qū)add_nadd_m65add_j被調用者數(shù)據(jù)區(qū)add_nadd_m556add_j3.傳地址將指向實參存儲位置的指針傳給被調用過程傳地址的實現(xiàn):1.在被調過程的數(shù)據(jù)空間中為每個形參開辟一個形式單元(用以存放相應實參的地址)。2.調用過程將實參的地址放在對應的形式單元中。若實參是一個表達式(包括常數(shù)),例如a+b或2,先對表達式求值,并將值存入某一位置,然后將該位置的地址放在形式單元中3.被調用過程執(zhí)行時,每當訪問(引用或賦值)形參時都處理成對形式單元的間接訪問。特點: 對形式參數(shù)的運算影響調用過程中的實參的值例過程定義
procedureSWAP(n,m:real);varj:real;begin j:=n;n:=m;m:=jend;主程序i:=5;k[i]:=6;SWAP(i,k[i]);過程調用過程調用時,有(假設i的地址為add_i)調用者數(shù)據(jù)區(qū)add_iadd_K[5]65執(zhí)行了語句”j:=n;n:=m;m:=j”后調用者數(shù)據(jù)區(qū)add_iadd_K[5]56結果:i=6,k[5]=5正確交換被調用者數(shù)據(jù)區(qū)add_nadd_madd_k[5]add_iadd_j被調用者數(shù)據(jù)區(qū)add_nadd_m5add_k[5]add_iadd_j4.傳名過程調用的作用相當于把被調用段的過程體抄到調用出現(xiàn)的位置,但把其中形式參數(shù)名換成相應的實在參數(shù)名。傳名的實現(xiàn):1.在被調過程的數(shù)據(jù)空間中為每個形參開辟一個形式單元(用以存放相應實參子程序的入口地址)。2.為每個實參設置一個計算實參地址和值的子程序(稱為參數(shù)子程序),并將其入口地址放在對應的形式單元中。3.被調用過程執(zhí)行時,每當訪問(引用或賦值)形參時就按實參子程序的入口地址調用相應的參數(shù)子程序計算出當時實參的值(供引用)或地址(供賦值)。例過程定義procedureSWAP(n,m:real);varj:real;begin j:=n;n:=m;m:=jend;主程序i:=5;k[i]:=6;SWAP(i,k[i]);過程調用…傳名的結果:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 5 Exploring the Topic-Grammar in use 教學設計 2024-2025學年仁愛科普版英語七年級上冊
- 《梯形的面積》(教學設計)-2024-2025學年人教版五年級數(shù)學上冊
- Unit1 Reading for writing(讀寫) 教學設計 2024-2025學年外研版(2024)七年級英語上冊
- 10《日月潭》教學設計-2024-2025學年二年級上冊語文統(tǒng)編版
- 1《學習伴我成長》(教學設計)-統(tǒng)編版道德與法治三年級上冊
- 10 描述方向教學設計-2023-2024學年科學二年級下冊冀人版
- 21古詩詞三首長相思 教學設計2024-2025學年統(tǒng)編版語文五年級上冊
- 6 植物的根 教學設計-2023-2024學年科學三年級上冊青島版
- 27《巨人的花園》教學設計-2023-2024學年四年級下冊語文統(tǒng)編版
- Unit 3 After school activities Lesson 2(教學設計)-2023-2024學年人教新起點版英語三年級下冊
- 【精益生產在機械制造企業(yè)中的應用研究(論文)】
- 藥品質量管理體系文件目錄
- 安徽涵豐科技有限公司年產6000噸磷酸酯阻燃劑DOPO、4800噸磷酸酯阻燃劑DOPO衍生品、12000噸副產品鹽酸、38000噸聚合氯化鋁、20000噸固化劑項目環(huán)境影響報告書
- GA/T 492-2004城市警用地理信息圖形符號
- 化妝品生產許可申請表樣板
- 老年綜合評估和老年綜合征課件
- 2023年西安鐵路職業(yè)技術學院單招綜合素質考試筆試題庫及答案解析
- (新版)網絡攻防知識考試題庫(含答案)
- 人員技能矩陣圖
- 教育評價學全套ppt課件完整版教學教程
- JJG 1063-2010 電液伺服萬能試驗機-(高清現(xiàn)行)
評論
0/150
提交評論