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

正文內(nèi)容

06-第6章-運(yùn)行時(shí)存儲(chǔ)空間的組織和管理-編譯原理-中國(guó)科-閱讀頁(yè)

2025-01-24 03:14本頁(yè)面
  

【正文】 procedure show。 procedure small。 begin r := 。 begin (綠色表示已執(zhí)行部分 ) r := 。 small。 show。 writeln end. dynamic show small small show show show ? r 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 dynamic r ? 非局部名字的訪問(wèn) program dynamic(input, output)。 procedure show。 procedure small。 begin r := 。 begin (綠色表示已執(zhí)行部分 ) r := 。 small。 show。 writeln end. dynamic show small small show show show r dynamic r ? 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問(wèn) program dynamic(input, output)。 procedure show。 procedure small。 begin r := 。 begin (綠色表示已執(zhí)行部分 ) r := 。 small。 show。 writeln end. dynamic show small small show show show r dynamic r ? show 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問(wèn) program dynamic(input, output)。 procedure show。 procedure small。 begin r := 。 begin (綠色表示已執(zhí)行部分 ) r := 。 small。 show。 writeln end. dynamic show small small show show show r dynamic r ? small r 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問(wèn) program dynamic(input, output)。 procedure show。 procedure small。 begin r := 。 begin (綠色表示已執(zhí)行部分 ) r := 。 small。 show。 writeln end. dynamic show small small show show show r dynamic r ? small r 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問(wèn) program dynamic(input, output)。 procedure show。 procedure small。 begin r := 。 begin (綠色表示已執(zhí)行部分 ) r := 。 small。 show。 writeln end. dynamic show small small show show show r dynamic r ? 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 參 數(shù) 傳 遞 值調(diào)用 ? 實(shí)參的右值傳給被調(diào)用過(guò)程 ? 值調(diào)用可以如下實(shí)現(xiàn) – 把形參當(dāng)作所在過(guò)程的局部名看待 , 形參的存儲(chǔ)單元在該過(guò)程的活動(dòng)記錄中 – 調(diào)用過(guò)程 計(jì)算實(shí)參 , 并把其右值放入 被調(diào)用過(guò)程形參的存儲(chǔ)單元中 參 數(shù) 傳 遞 引用調(diào)用 ? 實(shí)參的左值傳給被調(diào)用過(guò)程 ? 引用調(diào)用可以如下實(shí)現(xiàn): – 把形參當(dāng)作所在過(guò)程的局部名看待 , 形參的存儲(chǔ)單元在該過(guò)程的活動(dòng)記錄中 – 調(diào)用過(guò) 程計(jì)算實(shí)參 , 把實(shí)參的左值放入被調(diào)用過(guò)程形參的存儲(chǔ)單元 – 在被調(diào)用過(guò)程的目標(biāo)代碼中 , 任何對(duì)形參的引用都是通過(guò)傳給該過(guò)程的指針來(lái)間接引用實(shí)參 參 數(shù) 傳 遞 換名調(diào)用 從概念上說(shuō) , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對(duì) 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 begin temp := x。 y := temp end 參 數(shù) 傳 遞 換名調(diào)用 從概念上說(shuō) , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對(duì) 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 例如: 調(diào)用 swap(i, a[i]) begin temp := x。 y := temp end 參 數(shù) 傳 遞 換名調(diào)用 從概念上說(shuō) , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對(duì) 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 例如: 調(diào)用 swap(i, a[i]) begin 替換結(jié)果: temp := i。 i := a[i]。 a[i] := temp y := temp end 參 數(shù) 傳 遞 換名調(diào)用 從概念上說(shuō) , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對(duì) 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 例如: 調(diào)用 swap(i, a[i]) begin 替換結(jié)果: temp := i。 i := a[i]。 a[i] := temp y := temp 交換兩個(gè)數(shù)據(jù)的程序 end 并非總是正確 堆 管 理 堆式分配 ? 堆用來(lái)存放生存期不確定的數(shù)據(jù) – C++和 Java允許程序員用 new創(chuàng)建對(duì)象 , 它們的生存期沒(méi)有被約束在創(chuàng)建它們的過(guò)程活動(dòng)的生成期之內(nèi) – 實(shí)現(xiàn)內(nèi)存回收是內(nèi)存管理器的責(zé)任 ? 堆空間的回收有兩種不同方式 – 程序顯式釋放空間: free( C) 或 delete( C++) – 垃圾收集器自動(dòng)收集 ( Java) 。 int num。 char name[20]。 ? 若是順序處理每個(gè)結(jié)構(gòu)體的多個(gè)域 , 左邊方式的數(shù)據(jù)局部性較好 ? 若是先順序處理每個(gè)結(jié)構(gòu)的 num域 , 再處理每個(gè)結(jié)構(gòu)的 name域 , … , 則右邊方式的數(shù)據(jù)局部性較好 ? 最好是按左邊方式編程 , 由編譯器決定是否需要將數(shù)據(jù)按右邊方式布局 堆 管 理 手工回收請(qǐng)求 ? 程序員在程序中顯式釋放堆塊來(lái)達(dá)到回收堆塊的目的 – 內(nèi)存泄漏:沒(méi)有釋放程序已經(jīng)引用不到的堆塊 只要內(nèi)存沒(méi)有用盡 , 它就不影響程序的正確性 自動(dòng)無(wú)用單元收集通過(guò)回收所有無(wú)用單元來(lái)擺脫內(nèi)存泄漏 – 懸空引用:引用已經(jīng)被釋放的堆塊 過(guò)分熱心地釋放數(shù)據(jù)對(duì)象而引起 懸空引用容易導(dǎo)致不會(huì)被捕獲的錯(cuò)誤 本 章 要 點(diǎn) ? 影響存儲(chǔ)分配策略的語(yǔ)言特征 ? 各種存儲(chǔ)分配策略 , 主要了解靜態(tài)分配和動(dòng)態(tài)棧式分配 ? 活動(dòng)記錄中各種數(shù)據(jù)域的作用和布局 ? 非局部數(shù)據(jù)訪問(wèn)的實(shí)現(xiàn)方法 ? 各種參數(shù)傳遞方式及其實(shí)現(xiàn) ? 堆管理 例 題 1 一個(gè) C語(yǔ)言程序及其在 X86/Linux操作系統(tǒng)上的編譯結(jié) 果如下 。 short bb = 20。 short dd = 40。 short bb = 20。 short dd = 40。 short bb = 20。 short dd = 40。 short bb = 20。 short dd = 40。 short bb = 20。 short dd = 40。 short bb = 20。 short dd = 40。 short bb = 20。 short dd = 40。 { long j。 func(j)。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 movl 8(%ebp),%edx 取 i到 寄存器 func(j)。 pop ebp ret 即 pop eip(下條指令地址 ) . . . 參數(shù) i 返址 控制鏈 變量 j . . . ebp esp 棧 低 高 例 題 2 func(i) func: long i。 subl $4,%esp 為 j分配空間 j= i 1。 decl %edx i – 1 } movl %edx,4(%ebp) i – 1 ? j movl 4(%ebp),%eax pushl %eax 把實(shí)參 j的值壓棧 call func 函數(shù)調(diào)用 addl $4,%esp 恢復(fù)棧頂指針 L1: leave 即 mov ebp, esp。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 movl 8(%ebp),%edx 取 i到 寄存器 func(j)。 pop ebp ret 即 pop eip(下條指令地址 ) . . . . . . ebp esp 參數(shù) i 例 題 2 func(i) func: long i。 subl $4,%esp 為 j分配空間 j= i 1。 decl %edx i – 1 } movl %edx,4(%ebp) i – 1 ? j movl 4(%ebp),%eax pushl %eax 把實(shí)參 j的值壓棧 call func 函數(shù)調(diào)用 addl $4,%esp 恢復(fù)棧頂指針 L1: leave 即 mov ebp, esp。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 movl 8(%ebp),%edx 取 i到 寄存器 func(j)。 pop ebp ret 即 pop eip(下條指令地址 ) . . . . . . ebp esp 參數(shù) i 返址 控制鏈 例 題 2 func(i) func: long i。 subl $4,%esp 為 j分配空間 j= i 1。 decl %edx i – 1 } movl %edx,4(%ebp) i – 1 ? j movl 4(%ebp),%eax pushl %eax 把實(shí)參 j的值壓棧 call func 函數(shù)調(diào)用 addl $4,%esp 恢復(fù)棧頂指針 L1: leave 即 mov ebp, esp。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 movl 8(%ebp),%edx 取 i到 寄存器 fun
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1