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

正文內(nèi)容

南開大學(xué)編譯原理第7章-文庫吧資料

2025-01-24 17:39本頁面
  

【正文】 cess ? 訪問鏈接,控制鏈接 ? “深入”控制棧 2. 淺訪問, shallow access ? 名字的當前綁定值保存在靜態(tài)區(qū)域 ? 過程 p新的活動開始,它的局部名字 n接管為 n分配的靜態(tài)區(qū)域 ? n的原值可保存在 p的活動記錄中,當活動結(jié)束時恢復(fù) 參數(shù)傳遞 ? 傳值方式, callbyvalue ?形參與局部名字同樣處理 ?存儲位置在被調(diào)用函數(shù)的活動記錄中 ?調(diào)用函數(shù)計算實參值,將其右值放置到形參的存儲位置 ?對形參的操作不會影響實參的值 傳值方式例 void swap(int x, int y) { int temp。 small。 writeln。 show。 show end。 var r : real。 begin write(r : 5 : 3) end。 var r : real。 b(f) end { c }。 begin f := m + n end { f }。 var m : integer。 begin writeln(h(2)) end { b }。從它的訪問鏈接開始,遍歷 npna(此值在編譯階段即可獲得)個訪問鏈接 2. 此時即可到達 a所在過程的活動記錄,由其訪問鏈接地址即可得到 a的地址 設(shè)置訪問鏈接 ? 調(diào)用序列代碼的一部分,假定過程 p(嵌套深度 np)調(diào)用過程 x(嵌套深度 nx) 1. npnx ?x在 p內(nèi)部聲明,應(yīng)將 x的訪問鏈接指向 p的訪問鏈接 2. np=nx ?當前包含 p和 x,深度為 1, 2, …, n x1的過程必然是相同 從 p開始,遍歷 npnx+1個訪問鏈接,到達同時包含 p、 x的最近的過程的活動記錄 x的訪問鏈接應(yīng)指向此記錄的訪問鏈接 過程作為參數(shù)的情況 program param(input, output)。 begin … end {quicksort}。 var i, j : integer。 var k, v : integer。a[j]:=x end {exchange}。 begin x:=a[i]。 begin … a … end {readarray}。 procedure readarray。 var a : array[0..10] of integer。 b(g)。 begin m := 0。 procedure b(function h(n : integer) : integer)。 function g(n : integer) : integer。 function f(n : integer) : integer。 B3 運行結(jié)果 2 1 0 3 0 1 0 0 實現(xiàn)方法 ?棧實現(xiàn),將塊看作過程 ?過程內(nèi)實現(xiàn) 無過程嵌套的靜態(tài)作用域 ?C ?局部名字 ——棧 ?任何過程之外的名字 ——靜態(tài)分配 ?非局部 ——全局概念 ?過程可作為參數(shù)和返回值 ?非局部名字都可用靜態(tài)地址訪問到 過程作為參數(shù) ——無嵌套情況 program pass(input, output)。 B1B3 int a = 2。 B0B2 int b = 0。 } printf(“%d %d\n”, a, b)。 printf(“%d %d\n”, a, b)。 printf(“%d %d\n”, a, b)。 { int b = 1??臻g釋放時,將塊退回空閑塊鏈表 3. 對大塊內(nèi)存分配,利用堆管理器 堆分配策略(續(xù)) r的活動記錄得到保持 訪問非局部名字 ?棧 ?詞法 /靜態(tài)作用域規(guī)則 lexical, staticscope rule C、 Pascal、 Ada 嵌套問題 ?動態(tài)作用域規(guī)則 dynamicscope rule Lisp、 APL、 Snobol 程序塊( block) ?語句塊+它的局部數(shù)據(jù)聲明 { 聲明 語句 } ?特性:嵌套結(jié)構(gòu)、不會交叉 ?“最近嵌套規(guī)則”, most closely nested rule ?對于塊 B中的聲明,其作用域包括 B ?塊 B中未聲明名字 x,則 B中對 x的引用由某個外層塊 B?中 x的聲明所確定, B?滿足: ?在包圍 B的,且有 x的聲明的外層塊中, B?是距離 B最近的那個 嵌套塊作用域示例 main() { int a = 0。 p = dangle()。i。 機器 1: 4字節(jié), a之后 1字節(jié)補丁 機器 2: 16字節(jié) 內(nèi)存分配策略 1. 靜態(tài)分配( static) ? 在編譯時(運行之前)確定所有數(shù)據(jù)的內(nèi)存分布 2. 棧分配( stack) ? 利用棧管理運行時存儲 3. 堆分配( heap) ? 允許用戶在運行時動態(tài)地在堆之上分配、釋放內(nèi)存 靜態(tài)分配策略 ? 局限性 1. 數(shù)據(jù)對象的大小和對其內(nèi)存位置的限制,必須在編譯時已知 2. 不允許遞歸 ? 對過程的多次活動,局部名字都綁定到相同的存儲位置 ——局部名字的值在多次調(diào)用間會得到保持( retain) 3. 不允許動態(tài)數(shù)據(jù)分配 例 Fortran的靜態(tài)分配 PROGRAM CNSUN CHARACTER * 50 BUF INTEGER NEXT CHARACTER C, PRDUCE DATA NEXT /1/, BUF /? ?/ 6 C = PRDUCE() BUF(NEXT:NEXT) = C NEXT = NEXT + 1 IF (C .NE. ? ?) GOTO 6 WRITE (*, ?(A)?) BUF END 賦初值 例 Fortran的靜態(tài)分配(續(xù)) CHARACTER FUNCTION PRDUCE() CHARACTER * 80 BUFFER INTEGER NEXT SAVE BUFFER, NEXT DATA NEXT /81/ IF
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1