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

正文內(nèi)容

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

2025-01-30 17:39 本頁面
 

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