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

正文內(nèi)容

南開大學(xué)編譯原理第7章(參考版)

2025-01-21 17:39本頁面
  

【正文】 … 。 case P: print(“dd 0%xH\n”, )。 case U: print(“dd 0%xH\n”, )。 case I: print(“dd %d\n”, )。 case S: print(“dw %d\n”, )。 ... lcc的運行時環(huán)境處理 ?數(shù)據(jù)定義 ?空間分配 case C: print(“db %d\n”, )。 ?生成的符號 ?合法匯編名 if (pgenerated) p = stringf(“L%s”, pname)。amp。 print(“ret\n”)。 print(“pop esi\n”)。 print(“pop ebp\n”)。 offset += roundup(qtypesize, 4)。 p = q = stringf(“%d”, p)。 Symbol q = caller[i]。 callee[i]。 lcc的運行時環(huán)境處理 ?處理參數(shù) offset = 16 + 4。 print(“push ebp\n”)。 print(“push esi\n”)。過程編號 ? 符號表操作 ?lookup:查找最近創(chuàng)建的表項 ?insert:創(chuàng)建新表項 ?delete:刪除最近創(chuàng)建的表項 鏈表實現(xiàn)方式 ? front:最近創(chuàng)建的符號表項 ? insert:創(chuàng)建表項,插入到 insert之前 ? lookup:從 front開始遍歷鏈表 ? delete ? 無需保存過程編號 ? 同一過程名字相鄰,保存每個過程位置即可 hash表實現(xiàn)方式 ?lookup:相同名字總是存入同一鏈表,在對應(yīng)鏈表搜索相同過程編號者即可 ?delete ?無需遍歷 hash表所有鏈表 ?作用域指針, scope link,相同作用域的所有表項串接起來 ?指針設(shè)置問題 高級語言的動態(tài)內(nèi)存分配 ?堆 ?顯式方式: new, delete ?隱式方式:中間計算結(jié)果 ?垃圾內(nèi)存( garbage) ? 已分配內(nèi)存未被任何指針引用 ? 垃圾收集, garbage collection ?空懸引用( dangling reference) ? 指針指向無效區(qū)域 動態(tài)內(nèi)存分配的處理 ?顯式方式,定長塊分配 隱式方式的內(nèi)存釋放問題 ? 記錄指向內(nèi)存塊的所有指針 ? 處理兩個問題 1. 塊邊界 2. 辨別塊是否被使用 a) 引用計數(shù)法, reference count 記錄引用塊的指針數(shù)目 計數(shù) =0?可以釋放 性能影響較大 b) 標記技術(shù), marking technique 暫停程序,檢查所有指針 引用的內(nèi)存塊標記為 used 未引用的內(nèi)存塊標記未 unused,可釋放 lcc的運行時環(huán)境處理 callee的幀 輸入?yún)?shù) 返回地址 存儲 ebx 存儲 esi 存儲 edi 存儲 ebp 局部變量和全局變量 caller的幀 esp ebp 0 4 8 12 16 20 lcc的運行時環(huán)境處理 ?調(diào)用序列 print(“%s: \n”, f)。 x := t3 + t4。 t3 := f(t1)。 ? t1 := A。 a[i] := temp。 … ?在傳名方式下,實際上相當于如下代碼 … temp := i。 writeln(a)。 begin a := 1。 a := 0。 procedure unsafe(var x : integer)。 例 program copyout(input, output)。 end. 傳地址方式 結(jié)果 a = 2 b = 1 調(diào)用者 存儲空間 ... a: 2 b: 1 ... swap 存儲空間 ... x:1000 y:1004 temp: 1 … 1000: 1004: … 例 (續(xù)) ? 若調(diào)用 swap(i, a[i]) 1. 將 i和 a[i]的左值復(fù)制到 swap的活動記錄中,假定保存在 arg1和 arg2兩個位置 ——分別對應(yīng)形參 x和 y 2. temp:=x——將 arg1指向位置的值( i的初值,假定為 I0)賦予 temp 3. x:=y——將 arg2指向位置的值賦予 arg1指向的位置 ——i := a[I0] 4. y:=temp——將 temp的值賦予 arg2指向的位置 ——a[I0]:=I0 復(fù)制-恢復(fù)方式 ? copyrestore,傳值和傳地址的混合, copyin, valueresult 1. 進入被調(diào)用函數(shù)之前,計算實參值,將其右值傳送到被調(diào)用函數(shù)(傳值)。 writeln(?a =?, a)。 b := 2。 end。 x := y。 var temp : integer。 } 結(jié)果 a is now 2, b is now 1 顯式傳遞地址 傳地址方式 ?callbyreference, callbyaddress, callbylocation,隱含傳遞地址 ?實參是名字或表達式,且具有左值,則其左值將被傳遞給形參 ?實參無左值,如 a+b或 2,則為其分配新的空間,將此空間的地址傳遞給形參 ?形參與實參 ——同一個數(shù)據(jù)對象 ?引用形參 ——用傳遞來的指針進行間接引用 例 program reference(input, output) var a, b : integer。b)。 swap(amp。 *y = temp。 temp = *x。 printf(“a is now %d, b is now %d\n”, a, b)。 } void main() { int a = 1, b = 2。 x = y。 end. 靜態(tài)綁定結(jié)果 動態(tài)綁定結(jié)果 此處調(diào)用 show r綁定到 此處調(diào)用 show r綁定到 實現(xiàn)方法 1. 深入訪問, deep ac
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1