freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

06-第6章-運行時存儲空間的組織和管理-編譯原理-中國科(編輯修改稿)

2025-02-01 03:14 本頁面
 

【文章內(nèi)容簡介】 ? 過程 p對變量 a訪問時 , a的地址由下面的二元組表示: ( np ? na, a在活動記錄中的偏移 ) 非局部名字的訪問 ? 建立訪問鏈 – 假定嵌套深度為 np的過程 p調(diào)用嵌套深度為 nx的過程 x (1) np nx的情況 sort 1 readarray 2 exchange 2 quicksort 2 partition 3 這時 x肯定就聲明在 p中 非局部名字的訪問 ? 建立訪問鏈 – 假定嵌套深度為 np的過程 p調(diào)用嵌套深度為 nx的過程 x (1) np nx的情況 – 被調(diào)用過程的訪問鏈必須指向調(diào)用過程的活動記錄的訪問鏈 ? 訪問非局部名字的存儲單元 sort readarray exchange quicksort partition s a, x q (1, 9) k, v 訪問鏈 s a, x q (1, 3) k, v 訪問鏈 q (1, 9) k, v 訪問鏈 s a, x q (1, 3) k, v 訪問鏈 q (1, 9) k, v 訪問鏈 p (1, 3) i, j 訪問鏈 e (1, 3) 訪問鏈 s a, x q (1, 3) k, v 訪問鏈 q (1, 9) k, v 訪問鏈 p (1, 3) i, j 訪問鏈 非局部名字的訪問 非局部名字的訪問 ? 建立訪問鏈 – 假定嵌套深度為 np的過程 p調(diào)用嵌套深度為 nx的過程 x (2) np ? nx的情況 sort 1 readarray 2 exchange 2 quicksort 2 partition 3 這時 p和 x的嵌套深度分別為 1, 2, … ,nx? 1的外圍過程肯定相同 非局部名字的訪問 ? 建立訪問鏈 – 假定嵌套深度為 np的過程 p調(diào)用嵌套深度為 nx的過程 x (2) np ? nx的情況 – 追蹤訪問鏈 np ? nx + 1次 , 到達了靜態(tài)包圍 x和 p的且離它們最近的那個過程的最新活動記錄 – 所到達的活動記錄就是 x的活動記錄中的訪問鏈應(yīng)該指向的那個活動記錄 ? 訪問非局部名字的存儲單元 sort readarray exchange quicksort partition s a, x q (1, 9) k, v 訪問鏈 s a, x q (1, 3) k, v 訪問鏈 q (1, 9) k, v 訪問鏈 s a, x q (1, 3) k, v 訪問鏈 q (1, 9) k, v 訪問鏈 p (1, 3) i, j 訪問鏈 e (1, 3) 訪問鏈 s a, x q (1, 3) k, v 訪問鏈 q (1, 9) k, v 訪問鏈 p (1, 3) i, j 訪問鏈 非局部名字的訪問 非局部名字的訪問 program param(input, output)。( 過程作為參數(shù) ) procedure b(function h(n: integer): integer)。 begin writeln(h(2)) end 。 procedure c。 var m: integer。 function f(n: integer): integer。 begin f := m+n end {f}。 begin m := 0。 b(f) end {c}。 begin c end. 函數(shù) f作為參數(shù)傳遞時,怎樣在 f被激活時建立它的訪問鏈 非局部名字的訪問 program param(input, output)。( 過程作為參數(shù) ) procedure b(function h(… begin writeln(h(2)) end 。 procedure c。 var m: integer。 function f(n: integer)… begin f := m+n end {f}。 begin m := 0。 b(f) end {c}。 begin c end. 從 b的訪問鏈難以建立 f的訪問鏈 訪 問 鏈 訪 問 鏈 param c m b f 非局部名字的訪問 program param(input, output)。( 過程作為參數(shù) ) procedure b(function h(… begin writeln(h(2)) end 。 procedure c。 var m: integer。 function f(n: integer)… begin f := m+n end {f}。 begin m := 0。 b(f) end {c}。 begin c end. f作為參數(shù)傳遞時,它的起始地址連同它的訪問鏈一起傳遞 訪 問 鏈 訪 問 鏈 param c m b f, 非局部名字的訪問 program param(input, output)。( 過程作為參數(shù) ) procedure b(function h(… begin writeln(h(2)) end 。 procedure c。 var m: integer。 function f(n: integer)… begin f := m+n end {f}。 begin m := 0。 b(f) end {c}。 begin c end. b調(diào)用 f時,用傳遞過來的訪問鏈來建立 f的訪問鏈 訪 問 鏈 訪 問 鏈 param c m b f, 訪 問 鏈 b 非局部名字的訪問 program ret (input, output)。( 過程作為返回值 ) var f: function (integer): integer。 function a: function (integer): integer。 var m: integer。 function addm (n: integer): integer。 begin return m+n end。 begin m:= 0。 return addm end。 procedure b (g: function (integer): integer)。 begin writeln (g(2)) end。 begin f := a。 b(f) end. a ret b addm 非局部名字的訪問 program ret (input, output)。( 過程作為返回值 ) var f: function (integer): integer。 function a: function (integer): integer。 var m: integer。 function addm (n: integer): integer。 begin return m+n end。 begin m:= 0。 return addm end。 procedure b (g: function (integer): integer)。 begin writeln (g(2)) end。 begin f := a。 b(f) end. a ret b addm 執(zhí)行 addm時, a的活動記錄已不存在,取不到 m的值 非局部名字的訪問 ? C語言的函數(shù)聲明不能嵌套 , 函數(shù)不論在什么情況下激活 , 要訪問的數(shù)據(jù)分成兩種情況 – 非靜態(tài)局部變量 ( 包括形式參數(shù) ) , 它們分配在活動記錄棧頂?shù)哪莻€活動記錄中 – 外部變量 ( 包括定義在其它源文件之中的外部變量 ) 和靜態(tài)的局部變量 , 它們都分配在靜態(tài)數(shù)據(jù)區(qū) – 因此 C語言允許函數(shù) ( 的指針 ) 作為返回值 非局部名字的訪問 動態(tài)作用域 ? 被調(diào)用過程的非局部名字 a和它在調(diào)用過程中引用的是同樣的存儲單元 – 基于 運行時的調(diào)用關(guān)系 – 而不 是基于靜態(tài)作用域來確定 ? 新的綁定僅為被調(diào)用過程的局部名字建立 ,這些名字在被調(diào)用過程的活動記錄中占用存儲單元 – 這一點 與靜態(tài)作用域沒有區(qū)別 非局部名字的訪問 program dynamic(input, output)。 var r: real。 procedure show。 begin write(r: 5: 3) end。 procedure small。 var r: real。 begin r := 。 show end。 begin r := 。 show。 small。 writeln。 show。 small。 writeln end. dynamic show small small show show show 非局部名字的訪問 program dynamic(input, output)。 var r: real。 procedure show。 begin write(r: 5: 3) end。 procedure small。 var r: real。 begin r := 。 show end。 begin 靜態(tài)作用域 r := 。 show。 small。 writeln。 show。 small。 writeln end. dynamic show small small show show show 非局部名字的訪問 program dynamic(input, output)。 var r: real。 procedure show。 begin write(r: 5: 3) end。 procedure small。 var r: real。 begin r := 。 show end。 begin 動 態(tài)作用域 r := 。 show。 small。 writeln。 show。 small。 writeln end. dynamic show small small show show show 非局部名字的訪問 實現(xiàn)動態(tài)作用域的方法 ? 深訪問 – 用控制鏈搜索運行棧 , 尋找包含該非局部名字的第一個活動記錄 ? 淺訪問 – 為每個名字 在 靜態(tài)分配的存儲空間 中保存它的當(dāng)前值 – 當(dāng)過程 p的新活動出現(xiàn)時 , p的局部名字 n使用在靜態(tài)數(shù)據(jù)區(qū)分配給 n的存儲單元 。 n的先前值保存在 p的 活動記錄 中 , 當(dāng) p的活動結(jié)束時再恢復(fù) 非局部名字的訪問 program dynamic(input, output)。 var r: real。 procedure show。 begin write(r: 5: 3) end。 procedure small。 var r: real。 begin r := 。 show end。 begin (綠色表示已執(zhí)行部分 ) r := 。 show。 small。 writeln。 show。 small。 writeln end. dynamic show small small show show show ? r 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 dynamic r ? 非局部名字
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1