【正文】
P D I S P L A Y 形式單元 m , n 2 連 接 數(shù) 據(jù) A 的 T O P ∶ ∶ ( b) 進(jìn) 入 分 程 序 B1。 5. 過程所轄的各分程序的局部數(shù)據(jù)單元。而過程體分程序(假定是一個(gè)分程序)當(dāng)作是它所管轄的第 1層分程序。這樣,上述的第二個(gè)問題便可解決。 例如:如果有一個(gè)從第 5層分程序轉(zhuǎn)出到達(dá)第 1層分程序的標(biāo)號(hào) L,雖然在第 5層分程序工作時(shí)知道 L所屬的層數(shù),我們極易從DISPLAY中獲得第 1層分程序的活動(dòng)記錄基址( SP),但是怎么知道第 1層分程序進(jìn)入時(shí)的 TOP呢?唯一的辦法是從 5,4,3和 2各層順序退出。但這種做法是極為低效的。 end。 L3: 2 end。 integer m,n。 ? 一個(gè)過程被調(diào)用時(shí),從調(diào)用過程的DISPLAY表中自下向上抄錄 n個(gè) SP值,再加上本層的 SP值。 主 ?? p ro c Q (b) 。 – RA: 返回地址 ,記錄調(diào)用該過程時(shí) 目標(biāo)程序的 斷點(diǎn) ,即調(diào)用過程指令的下一條指令的地址。 write(2*c)。 begin c:=b+a。 2. 用嵌套層次顯示表 DISPLAY。 ? (實(shí)現(xiàn))一個(gè)過程執(zhí)行時(shí)可以引用它的任一外層過程的最新活動(dòng)記錄中的某些數(shù)據(jù)。 l 實(shí)參 (形式單元) l 返回值 (對(duì)函數(shù)) (有時(shí)可使用寄存器存放返回值) 簡(jiǎn)單的棧式分配方案 ? 程序結(jié)構(gòu)特點(diǎn) :過程定義不嵌套,過程可遞歸調(diào)用,含可變數(shù)組 。 數(shù)據(jù)表示 各種數(shù)據(jù)對(duì)象的存儲(chǔ)分配 數(shù)據(jù)對(duì)象的屬性 name 名字,名稱 type 類型 location 內(nèi)存地址 value 值 ponent 成分 數(shù)據(jù)表示 簡(jiǎn)單變量: char: 1 byte integers: 2 or 4 bytes floats: 4 to 16 bytes booleans: 1 bit (but usually 1 byte) 指針: unsigned integers 一維數(shù)組:一塊連續(xù)的存儲(chǔ)區(qū) 多維數(shù)組:一塊連續(xù)的存儲(chǔ)區(qū),按行存放 結(jié)構(gòu)(記錄):把所有域( field)存放在一塊連續(xù)的存儲(chǔ)區(qū) 對(duì)象:類的實(shí)例變量象結(jié)構(gòu)的域一樣存放在一塊連續(xù)的存儲(chǔ)區(qū),但方法(成員函數(shù))不存在該對(duì)象里 指令: 目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織 存儲(chǔ)分配策略: 簡(jiǎn)單的棧式分配方案 嵌套過程的棧式分配方案 分程序結(jié)構(gòu)的存儲(chǔ)分配方案 堆式存儲(chǔ) 靜態(tài)存儲(chǔ)分配 動(dòng)態(tài)存儲(chǔ)分配 ——棧式 堆式 術(shù)語 過程活動(dòng)記錄 AR : 為說明方便,假定 源 程序是由過程組成, 運(yùn)行時(shí)稱作過程的激活。 ? ? 例 procedure A(m,n:integer)。 ? 動(dòng)態(tài):如果名字的性質(zhì)只有在程序運(yùn)行時(shí)才能知道,則稱這種性質(zhì)為“動(dòng)態(tài)”確定的。 ? begin ? ? end。 l 控制鏈 (可選) 指向調(diào)用者的活動(dòng)記錄,釋放棧。 ? 主程序執(zhí)行語句 ? end main Main Q R Main Q Q T O P R 的活動(dòng)記錄 Q 的活動(dòng)記錄 S P Q 的活動(dòng)記錄 Q 的活動(dòng)記錄 主程序全局 主程序全局 數(shù)據(jù)區(qū) 數(shù)據(jù)區(qū)T O P 臨時(shí)工作單元 局部簡(jiǎn)單變量 局部數(shù)組的內(nèi)情向量 保存運(yùn) 行過程前的狀態(tài) (返回地址,寄存器值??) 實(shí)參 (形式單元)和參數(shù)個(gè)數(shù) S P 控制鏈 (老 SP ) TOP R 的數(shù)組區(qū) S P R 的活動(dòng)記錄 Q 的活動(dòng)記錄 主程序全局 數(shù)據(jù)區(qū) 嵌套過程語言的棧式 分配方案 l主要特點(diǎn) : ? (語言)一個(gè)過程可以引用包圍它的任一外層過程所定義的標(biāo)識(shí)符(如變量,數(shù)組或過程等)。 ? 跟蹤辦法: 1. 用靜態(tài)鏈(如 PL/0的 SL)。 procedure p。 while b0 do begin call p。 – DL: 動(dòng)態(tài)鏈 ,指向 調(diào)用 該過程前正在運(yùn)行過 程的數(shù)據(jù)段基地址。 ?? R en d /* R* / pr oc P (a) 。 ca ll P en d /* P*/ ?? ca ll R P ( W ); ?? R ( U , V ); ??en d /* m ai n* /用 Display表的方案 (1)主程序 (2)P(3)Q(4)R P 的 活動(dòng)記錄 主程序的 活動(dòng)記錄 d[1] d[0] display sp top 主程序的 活動(dòng)記錄 d[0] sp display top ( 1) ( 2) 用 Display表的方案 ? 主程序 PQR R 的 活動(dòng)記錄 Q 的 活動(dòng)記錄 P 的 活動(dòng)記錄 主程序的 活動(dòng)記錄 Q 的 活動(dòng)記錄 P 的 活動(dòng)記錄 主程序的 活動(dòng)記錄