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

正文內(nèi)容

南開大學(xué)編譯原理第7章(已修改)

2025-01-30 17:39 本頁面
 

【正文】 第七章 運(yùn)行時(shí)環(huán)境 學(xué)習(xí)內(nèi)容 ?源語言語義 ?存儲(chǔ)組織 ?存儲(chǔ)分配策略 ?對(duì)非局部名字的訪問 ?參數(shù)傳遞 ?符號(hào)表 ?動(dòng)態(tài)內(nèi)存分配 源語言相關(guān)問題 ? 過程(函數(shù)), procedure——靜態(tài) 活動(dòng), activation——?jiǎng)討B(tài) ?過程定義, procedure definition ?過程名, procedure name ?過程體, procedure body ?函數(shù), function ?調(diào)用, call ?形式參數(shù), formal parameters ?實(shí)際參數(shù), actual parameters Pascal源碼示例 program sort(input, output)。 var a : array [0..10] of integer。 procedure readarray。 var i : integer。 begin for i := 1 to 9 do read(a[i])。 end。 function partition(y, z : integer) : integer。 var i, j, x, v : integer。 begin … end。 過程定義 過程名 形式參數(shù) 函數(shù)定義 過程體 Pascal源碼示例(續(xù)) procedure quicksort(m, n : integer)。 var i : integer。 begin if (n m) then begin i := partition(m, n)。 quicksort(m, i 1)。 quicksort(i + 1, n) end end。 調(diào)用 實(shí)際參數(shù) Pascal源碼示例(續(xù)) begin a[0] := 9999。 a[10] := 9999。 readarray。 quicksort(1, 9)。 end. 活動(dòng)樹( activation tree) ?控制流 ? 順序性:程序的執(zhí)行 ?一組操作步驟序列,在每個(gè)步驟,控制流開始于程序的特定位置 ? 過程的執(zhí)行:起始于過程體開始,最終控制權(quán)返回到過程調(diào)用點(diǎn)之后 ?活動(dòng)樹 表示 ?活動(dòng) :一次 執(zhí)行 ( execution) ?過程 P的 生存期 , lifetime: ? 過程體執(zhí)行的第一步操作到最后一步操作的操作序列,包括 P調(diào)用其他過程的時(shí)間 過程的活動(dòng) ? p調(diào)用 q,控制最終會(huì)返回 p——每次控制流從 p轉(zhuǎn)移到 q,總會(huì)返回到 p ?過程的生命期或者不重疊、或者嵌套 ——b在 a退出之前進(jìn)入,則必在 a之前退出 ? 利用輸出語句演示嵌套 execution begin… … enter readarray leave quicksort(1, 3) leave readarray enter quicksort(5, 9) enter quicksort(1, 9) … enter partition(1, 9) leave quicksort(5, 9) leave partition(1, 9) leave quicksort(1, 9) enter quicksort(1, 3) execution terminated. 遞歸 ? 過程 p的某個(gè)活動(dòng)尚未結(jié)束,可以開始它的一個(gè)新的活動(dòng) ? 間接遞歸 ? 活動(dòng)樹 1. 結(jié)點(diǎn) ——過程的活動(dòng) 2. 根結(jié)點(diǎn) ——主程序的活動(dòng) 3. a是 b的父結(jié)點(diǎn) ??控制流從 a到 b 4. a在 b的左邊 ??a的生存期在 b之前 例 控制棧( control stack) ?活動(dòng)樹深度優(yōu)先遍歷 ?控制流變化 ?控制棧 ?當(dāng)活動(dòng)開始,對(duì)應(yīng)結(jié)點(diǎn)入棧 ?結(jié)束后,將其彈出 ?當(dāng)前棧內(nèi)容 ——到根結(jié)點(diǎn)的路徑 例 作用域 ?聲明( declaration):規(guī)定名字的含義 ?顯式聲明、隱式聲明( Fortran) ?同一名字在程序不同位置的不同聲明 ?作用域( scope):聲明起作用的范圍 ? 局部的( local)、非局部的( nonlocal) ?作用域規(guī)則 ? 確定聲明起作用的范圍 ? 名字對(duì)應(yīng)哪個(gè)聲明 ?利用符號(hào)表 名字的綁定( binding) ?名字只聲明一次,運(yùn)行時(shí)也可能指向不同數(shù)據(jù)對(duì)象 ?環(huán)境 ( environment):函數(shù) ? 名字 ?存儲(chǔ)位置,名字 ?lvalue ?狀態(tài) ( state):函數(shù) ? 存儲(chǔ)位置 ?存儲(chǔ)數(shù)據(jù), lvalue?rvalue 環(huán)境和狀態(tài) ?賦值語句改變狀態(tài),但不改變環(huán)境 ?對(duì)某個(gè)環(huán)境,若名字 x對(duì)應(yīng)存儲(chǔ)位置 s? x綁定 到 s, s是 x的一個(gè) 綁定 ?綁定 ——聲明的動(dòng)態(tài)概念 ? Pascal過程的局部名字,不同活動(dòng) ?不同存儲(chǔ)位置 過程的定義 過程的活動(dòng) 名字的聲明 名字的綁定 聲明的作用域 綁定的生存期 靜態(tài)概念 動(dòng)態(tài)概念 影響存儲(chǔ)組織的幾個(gè)問題 1. 過程可否遞歸? 2. 過程活動(dòng)結(jié)束時(shí),局部名字值如何處理 3. 過程可否訪問非局部名字? 4. 過程被調(diào)用時(shí),參數(shù)如何傳遞 5. 過程可否作為參數(shù) 6. 過程可否作為返回類型 7. 程序可否動(dòng)態(tài)控制存儲(chǔ)分配 8. 存儲(chǔ)是否必須顯式釋放? 存儲(chǔ)組織 ? 運(yùn)行時(shí)存儲(chǔ)細(xì)化 ?存儲(chǔ)目標(biāo)代碼 ——大小固定 ?存儲(chǔ)數(shù)據(jù)對(duì)象 ——部分固定 ?控制棧 ——保存過程的活動(dòng)信息 活動(dòng)信息的保存 ?過程調(diào)用 ? 當(dāng)前過程活動(dòng)終止 ? 狀態(tài)信息(寄存器、 PC) ?控制棧 ?調(diào)用返回 ? 從控制?;謴?fù)狀態(tài)信息 ? 停止的過程活動(dòng)重新開始 ?局部數(shù)據(jù)對(duì)象 ?控制棧 ?堆 ? 動(dòng)態(tài)內(nèi)存分配 ? 也可能保存活動(dòng)信息 活動(dòng)記錄 (activation record) 存放被調(diào)用函數(shù)傳遞給調(diào)用函數(shù)的返回結(jié)果 調(diào)用函數(shù)向被調(diào)用函數(shù)傳遞實(shí)際參數(shù)的區(qū)域 調(diào)用
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1