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

正文內(nèi)容

06-第6章-運(yùn)行時(shí)存儲空間的組織和管理-編譯原理-中國科-預(yù)覽頁

2025-01-30 03:14 上一頁面

下一頁面
 

【正文】 局部數(shù)據(jù) 返回值 和參數(shù) 返回值和參數(shù) ? ? ? 控制鏈 和保存的機(jī)器狀態(tài) top_sp base_sp 棧 增 長 方 向 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? (1) q把返回值置入鄰近 p的活動記錄的地方 參數(shù)個(gè)數(shù)可變場合難以確定存放返回值的位置,因此通常用寄存器傳遞返回值 全局棧式存儲分配 過程 p調(diào)用過程 q的返回序列 (2) q對應(yīng)調(diào)用序列的步驟 (4),減小top_sp的值 返回值和參數(shù) top_sp base_sp 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? 返回值和參數(shù) 控制鏈 和保存的機(jī)器狀態(tài) 全局棧式存儲分配 過程 p調(diào)用過程 q的返回序列 (3) q恢復(fù)寄存器 (包括 base_sp)和機(jī)器狀態(tài),返回 p 返回值和參數(shù) top_sp base_sp 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? 返回值和參數(shù) 全局棧式存儲分配 過程 p調(diào)用過程 q的返回序列 返回值和參數(shù) top_sp base_sp 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? (4) p根據(jù)參數(shù)個(gè)數(shù)與類型和返回值類型調(diào)整 top_sp, 然后取出返回值 全局棧式存儲分配 過程的參數(shù)個(gè)數(shù)可變的情況 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 參 數(shù) 參 數(shù) ? ? ? 控制鏈 和保存的機(jī)器狀態(tài) top_sp base_sp 棧 增 長 方 向 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? (1) 函數(shù)返回值改成用寄存器傳遞 全局棧式存儲分配 過程的參數(shù)個(gè)數(shù)可變的情況 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 參數(shù) 1, …, 參數(shù) n 參數(shù) 1, …, 參數(shù) m ? ? ? 控制鏈 和保存的機(jī)器狀態(tài) top_sp base_sp 棧 增 長 方 向 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? (2) 編譯器產(chǎn)生將實(shí)參表達(dá)式逆序計(jì)算并將結(jié)果進(jìn)棧的代碼 自上而下依次是參數(shù) 1, …, 參數(shù)n 全局棧式存儲分配 過程的參數(shù)個(gè)數(shù)可變的情況 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 參數(shù) 1, …, 參數(shù) n 參數(shù) 1, …, 參數(shù) m ? ? ? 控制鏈 和保存的機(jī)器狀態(tài) top_sp base_sp 棧 增 長 方 向 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? (3) 被調(diào)用函數(shù)能準(zhǔn)確地知道第一個(gè)參數(shù)的位置 全局棧式存儲分配 過程的參數(shù)個(gè)數(shù)可變的情況 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 參數(shù) 1, …, 參數(shù) n 參數(shù) 1, …, 參數(shù) m ? ? ? 控制鏈 和保存的機(jī)器狀態(tài) top_sp base_sp 棧 增 長 方 向 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? (4) 被調(diào)用函數(shù)根據(jù)第一個(gè)參數(shù)到棧中取第二、第三個(gè)參數(shù)等等 全局棧式存儲分配 過程的參數(shù)個(gè)數(shù)可變的情況 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 參數(shù) 1, …, 參數(shù) n 參數(shù) 1, …, 參數(shù) m ? ? ? 控制鏈 和保存的機(jī)器狀態(tài) top_sp base_sp 棧 增 長 方 向 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? C語言的 printf函 數(shù)就是按此方式, 用 C語言編寫的 下面語句的輸出? printf(“%d, %d, %d\n”)。 | return j。 procedure c。 begin m := 0。 procedure c。 b(f) end {c}。 var m: integer。 begin c end. f作為參數(shù)傳遞時(shí),它的起始地址連同它的訪問鏈一起傳遞 訪 問 鏈 訪 問 鏈 param c m b f, 非局部名字的訪問 program param(input, output)。 function f(n: integer)… begin f := m+n end {f}。( 過程作為返回值 ) var f: function (integer): integer。 begin return m+n end。 begin writeln (g(2)) end。 function a: function (integer): integer。 begin m:= 0。 begin f := a。 begin write(r: 5: 3) end。 show end。 writeln。 var r: real。 var r: real。 show。 small。 begin write(r: 5: 3) end。 show end。 writeln。 n的先前值保存在 p的 活動記錄 中 , 當(dāng) p的活動結(jié)束時(shí)再恢復(fù) 非局部名字的訪問 program dynamic(input, output)。 procedure small。 begin (綠色表示已執(zhí)行部分 ) r := 。 show。 procedure show。 begin r := 。 small。 writeln end. dynamic show small small show show show r dynamic r ? 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問 program dynamic(input, output)。 procedure small。 begin (綠色表示已執(zhí)行部分 ) r := 。 show。 procedure show。 begin r := 。 small。 writeln end. dynamic show small small show show show r dynamic r ? small r 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問 program dynamic(input, output)。 procedure small。 begin (綠色表示已執(zhí)行部分 ) r := 。 show。 procedure show。 begin r := 。 small。 writeln end. dynamic show small small show show show r dynamic r ? 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 參 數(shù) 傳 遞 值調(diào)用 ? 實(shí)參的右值傳給被調(diào)用過程 ? 值調(diào)用可以如下實(shí)現(xiàn) – 把形參當(dāng)作所在過程的局部名看待 , 形參的存儲單元在該過程的活動記錄中 – 調(diào)用過程 計(jì)算實(shí)參 , 并把其右值放入 被調(diào)用過程形參的存儲單元中 參 數(shù) 傳 遞 引用調(diào)用 ? 實(shí)參的左值傳給被調(diào)用過程 ? 引用調(diào)用可以如下實(shí)現(xiàn): – 把形參當(dāng)作所在過程的局部名看待 , 形參的存儲單元在該過程的活動記錄中 – 調(diào)用過 程計(jì)算實(shí)參 , 把實(shí)參的左值放入被調(diào)用過程形參的存儲單元 – 在被調(diào)用過程的目標(biāo)代碼中 , 任何對形參的引用都是通過傳給該過程的指針來間接引用實(shí)參 參 數(shù) 傳 遞 換名調(diào)用 從概念上說 , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 y := temp end 參 數(shù) 傳 遞 換名調(diào)用 從概念上說 , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 y := temp end 參 數(shù) 傳 遞 換名調(diào)用 從概念上說 , 每次調(diào)用時(shí) , 用實(shí)參表達(dá)式對 形參進(jìn)行正文替換 , 然后再執(zhí)行 procedure swap(var x, y: integer)。 i := a[i]。 例如: 調(diào)用 swap(i, a[i]) begin 替換結(jié)果: temp := i。 a[i] := temp y := temp 交換兩個(gè)數(shù)據(jù)的程序 end 并非總是正確 堆 管 理 堆式分配 ? 堆用來存放生存期不確定的數(shù)據(jù) – C++和 Java允許程序員用 new創(chuàng)建對象 , 它們的生存期沒有被約束在創(chuàng)建它們的過程活動的生成期之內(nèi) – 實(shí)現(xiàn)內(nèi)存回收是內(nèi)存管理器的責(zé)任 ? 堆空間的回收有兩種不同方式 – 程序顯式釋放空間: free( C) 或 delete( C++) – 垃圾收集器自動收集 ( Java) 。 char name[20]。 short bb = 20。 short bb = 20。 short bb = 20。 short bb = 20。 short bb = 20。 short bb = 20。 short bb = 20。 { long j。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 pop ebp ret 即 pop eip(下條指令地址 ) . . . 參數(shù) i 返址 控制鏈 變量 j . . . ebp esp 棧 低 高 例 題 2 func(i) func: long i。 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。 movl 8(%ebp),%edx 取 i到 寄存器 func(j)。 subl $4,%esp 為 j分配空間 j= i 1。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 pop ebp ret 即 pop eip(下條指令地址 ) . . . . . . ebp esp 參數(shù) i 返址 控制鏈 例 題 2 func(i) func: long i。 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。 movl 8(%ebp),%edx 取 i到 寄存器 fun
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1