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

正文內(nèi)容

第六章運行時存儲空間的組織和管理(參考版)

2024-08-12 13:21本頁面
  

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