【正文】
否則稱為可變 (動態(tài) )數(shù)組。(12 ) end. lexica l sco pe0 .25 0 0 .25 00 .25 0 0 .25 0dyna mic sco pe0 .25 0 0 .12 50 .25 0 0 .12 5 術(shù)語 ? 靜態(tài):如果一個名字的性質(zhì)通過說明語句或隱或顯規(guī)則而定義,則稱這種性質(zhì)是“靜態(tài)”確定的。 small 。 wri te /n 。(10 ) sho w。 sho w e nd。(6) v ar r :r eal。(4) begin wri te ( r: 5:3 ) end 。第十章 目標(biāo)程序 運行時的 存儲組織 1. 概述 2. 棧式存儲分配的實現(xiàn) 1) 簡單的棧式存儲分配的實現(xiàn) 2) 嵌套過程語言的棧式實現(xiàn) 3) 分程序結(jié)構(gòu)的存儲管理 3. 參數(shù)傳遞 4. 過程調(diào)用、過程進入和過程返回 概述 任務(wù):編譯程序?qū)δ繕?biāo)程序運行時的數(shù)據(jù)空間的組織和管理(設(shè)計運行環(huán)境和分配存儲) 如 通常棧式存儲分配布局可為: 目標(biāo)代碼區(qū) 靜態(tài)數(shù)據(jù)區(qū) Stack heap 運行環(huán)境和存儲分配設(shè)計分析 邏輯階段:在目標(biāo)代碼生成前,作準(zhǔn)備 實質(zhì): 關(guān)聯(lián)( Binding) 將源程序的文本 ? 程序運行動作的實現(xiàn) 源文件中的名字 N ? 運行時的存儲 S 在語義學(xué)中,使用術(shù)語 environment函數(shù)表示 env: N→S (N 到 S的映射 ) 靜態(tài)文本中 運行時動作及為實現(xiàn)其動作的準(zhǔn)備 (與運行時數(shù)據(jù)對象的表示有關(guān))過程定義 過程名 執(zhí)行過程體 過程體 控制數(shù)據(jù)對象的分配,為執(zhí)行過程體使用源文本中同樣的名字 目標(biāo)程序中不同的數(shù)據(jù)空間因為一個過程可以是遞歸的,這時同一個名字在不同的時間可能代表不同的存儲單元 決定存儲管理復(fù)雜程度的因素——源語言本身1. 允許的數(shù)據(jù)類型的多少2 .語言中允許的數(shù)據(jù)項是 靜態(tài)確定 動態(tài)確定3 .程序結(jié)構(gòu) 決定名字的作用域的規(guī)則和結(jié)構(gòu)A . 段結(jié)構(gòu)B . 過程定義不嵌套,只允許過程遞歸調(diào)用C . 分程序結(jié)構(gòu)分程序嵌套過程定義嵌套存儲分配方案策略:? 靜態(tài)存儲分配? 動態(tài)存儲分配——棧式 堆式 聲明的作用域 詞法作用域 動態(tài)作用域例: ( 1 ) p r og ram dyna mic( i ,0)。(2) va r r :r eal(3) procedur e show。(5) procedru e sma ll。(7) begin r := 5。(8) begin(9) r := 。 small 。(11 ) sho w。 wri te /n 。 ? 動態(tài):如果名字的性質(zhì)只有在程序運行時才能知道,則稱這種性質(zhì)為“動態(tài)”確定的。 ? 例 procedure A(m,n:integer)。 ? array B[m:n]。 ? ? end。 ? 數(shù)組內(nèi)情向量 : 編譯中,將數(shù)組的有關(guān)信息記錄在一些單元中,稱為 “內(nèi)情向量”,確定數(shù)組,放在符號表中;可變數(shù)組,運行時建立相應(yīng)的內(nèi)情向量。一個過程的一次執(zhí)行所需要的信息使用一個連續(xù)的存儲區(qū)來管理,這個區(qū) (塊)叫做一個活動記錄或 fr am e ( 幀 )一般這個段要記錄:? 臨時值,如計算表達式時的中間工作單元。? 控制鏈 (可選) 指向調(diào)用者的活動記錄,釋放棧。 ? 例 : main ? 全局變量的說明 ? proc R ? …… ? end R。 ? 主程序執(zhí)行語句 ? end main Main Q R Main Q Q T O P R 的活動記錄 Q 的活動記錄 S P Q 的活動記錄 Q 的活動記錄 主程序全局 主程序全局 數(shù)據(jù)區(qū) 數(shù)據(jù)區(qū)T O P 臨時工作單元 局部簡單變量 局部數(shù)組的內(nèi)情向量 保存運 行過程前的狀態(tài) (返回地址,寄存器值??) 實參 (形式單元)和參數(shù)個數(shù) S P 控制鏈 (老 SP ) TOP R 的數(shù)組區(qū) S P R 的活動記錄 Q 的活動記錄 主程序全局 數(shù)據(jù)區(qū) 嵌套過程語言的棧式 分配方案 ?主要特點 : ? (語言)一個過程可以引用包圍它的任一外層過程所定義的標(biāo)識符(如變量,數(shù)組或過程等)。 ? 關(guān)鍵技術(shù):解決對非局部量的引用(存?。?。 ? 跟蹤辦法: 1. 用靜態(tài)鏈(如 PL/0的 SL)。 例:prog ram m ain (i, 0)。 ?? R end /* R*/ proc P (a)。 ?? P Q call R R( x , y)。 call P end /* P*/ ?? call R P ( W ); ?? R ( U , V ); ??end /* m ain */ 用 Display表的方案 (1)主程序 (2)