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

正文內(nèi)容

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

2023-02-02 03:14:44 本頁(yè)面
 

【正文】 1,3) q(1,0) p(1,3) 全局棧式存儲(chǔ)分配 調(diào)用序列 ? 過(guò)程調(diào)用和過(guò)程返回都需要執(zhí)行一些代碼來(lái)管理活動(dòng)記錄棧 , 保存或恢復(fù)機(jī)器狀態(tài)等 ? 過(guò)程調(diào)用序列 過(guò)程調(diào)用時(shí)執(zhí)行的分配活動(dòng)記錄 , 把信息填入它的域中 , 使被調(diào)用過(guò)程可以開(kāi)始執(zhí)行的代碼 ? 過(guò)程返回序列 被調(diào)用過(guò)程返回時(shí)執(zhí)行的恢復(fù)機(jī)器狀態(tài) , 釋放被調(diào)用過(guò)程活動(dòng)記錄 , 使調(diào)用過(guò)程能夠繼續(xù)執(zhí)行的代碼 ? 調(diào)用序列和返回序列 常常都分成兩部分 , 分處于調(diào)用過(guò)程和被調(diào)用過(guò)程中 全局棧式存儲(chǔ)分配 ? 即使是同一種語(yǔ)言 , 過(guò)程調(diào)用序列 、 返回序列和活動(dòng)記錄中各域的排放次序 , 也會(huì)因?qū)崿F(xiàn)而異 ? 設(shè)計(jì)這些序列和活動(dòng)記錄 的一些原則 – 以活動(dòng)記錄中間的某個(gè) 位置作為基地址 – 長(zhǎng)度能較早確定的域放在 活動(dòng)記錄的中間 返 回 值 臨 時(shí) 數(shù) 據(jù) 參 數(shù) 控 制 鏈 訪(fǎng) 問(wèn) 鏈 機(jī) 器 狀 態(tài) 局 部 數(shù) 據(jù) 全局棧式存儲(chǔ)分配 ? 即使是同一種語(yǔ)言 , 過(guò)程調(diào)用序列 、 返回序列和活動(dòng)記錄中各域的排放次序 , 也會(huì)因?qū)崿F(xiàn)而異 ? 設(shè)計(jì)這些序列和活動(dòng)記錄 的一些原則 – 一般把臨時(shí)數(shù)據(jù)域放在 局部數(shù)據(jù)域的后面 – 把參數(shù)域和可能有的返回 值域放在緊靠調(diào)用者活動(dòng) 記錄的地方 返 回 值 臨 時(shí) 數(shù) 據(jù) 參 數(shù) 控 制 鏈 訪(fǎng) 問(wèn) 鏈 機(jī) 器 狀 態(tài) 局 部 數(shù) 據(jù) 全局棧式存儲(chǔ)分配 ? 即使是同一種語(yǔ)言 , 過(guò)程調(diào)用序列 、 返回序列和活動(dòng)記錄中各域的排放次序 , 也會(huì)因?qū)崿F(xiàn)而異 ? 設(shè)計(jì)這些序列和活動(dòng)記錄 的一些原則 – 用同樣的代碼來(lái)執(zhí)行各個(gè) 活動(dòng)的保存和恢復(fù) 返 回 值 臨 時(shí) 數(shù) 據(jù) 參 數(shù) 控 制 鏈 訪(fǎng) 問(wèn) 鏈 機(jī) 器 狀 態(tài) 局 部 數(shù) 據(jù) 全局棧式存儲(chǔ)分配 過(guò)程 p調(diào)用過(guò)程 q的調(diào)用序列 返回值和參數(shù) top_sp base_sp 臨時(shí)數(shù)據(jù)局部數(shù)據(jù) 控制鏈 和保存的機(jī)器狀態(tài) ? ? ? 全局棧式存儲(chǔ)分配 過(guò)程 p調(diào)用過(guò)程 q的調(diào)用序列 (1) p計(jì)算實(shí)參,依次放入棧頂,并在棧頂留出放返回值的空間。 q = dangle ( )。 begin writeln(h(2)) end 。 begin f := m+n end {f}。( 過(guò)程作為參數(shù) ) procedure b(function h(… begin writeln(h(2)) end 。 begin m := 0。 procedure c。 b(f) end {c}。 var m: integer。 begin c end. b調(diào)用 f時(shí),用傳遞過(guò)來(lái)的訪(fǎng)問(wèn)鏈來(lái)建立 f的訪(fǎng)問(wèn)鏈 訪(fǎng) 問(wèn) 鏈 訪(fǎng) 問(wèn) 鏈 param c m b f, 訪(fǎng) 問(wèn) 鏈 b 非局部名字的訪(fǎng)問(wèn) program ret (input, output)。 function addm (n: integer): integer。 procedure b (g: function (integer): integer)。( 過(guò)程作為返回值 ) var f: function (integer): integer。 begin return m+n end。 begin writeln (g(2)) end。 procedure show。 begin r := 。 small。 writeln end. dynamic show small small show show show 非局部名字的訪(fǎng)問(wèn) program dynamic(input, output)。 procedure small。 begin 靜態(tài)作用域 r := 。 show。 procedure show。 begin r := 。 small。 writeln end. dynamic show small small show show show 非局部名字的訪(fǎng)問(wèn) 實(shí)現(xiàn)動(dòng)態(tài)作用域的方法 ? 深訪(fǎng)問(wèn) – 用控制鏈搜索運(yùn)行棧 , 尋找包含該非局部名字的第一個(gè)活動(dòng)記錄 ? 淺訪(fǎng)問(wèn) – 為每個(gè)名字 在 靜態(tài)分配的存儲(chǔ)空間 中保存它的當(dāng)前值 – 當(dāng)過(guò)程 p的新活動(dòng)出現(xiàn)時(shí) , p的局部名字 n使用在靜態(tài)數(shù)據(jù)區(qū)分配給 n的存儲(chǔ)單元 。 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。 var r: real。 var r: real。 show。 small。 begin write(r: 5: 3) end。 show end。 writeln。 var r: real。 var r: real。 show。 small。 x := y。 x := y。 temp := x。 var temp: integer。 x := y。 char name[10000][20]。 根據(jù)所生成的匯編程序來(lái)解釋程序中四個(gè)變 量的存儲(chǔ)分配 、 生存期 、 作用域和置初值方式等方面 的區(qū)別 static long aa = 10。 } 例 題 1 .data | .align 4 .align 4 | .type ,object .type aa,object | .size ,4 .size aa,4 | : aa: | .long 30 .long 10 | .text .globl bb | .align 4 .align 2 | .globl func .type bb,object | func: .size bb,2 | . . . bb: | movw $40,2(%ebp) .value 20 | . . . static long aa = 10。 } 例 題 1 .data | .align 4 .align 4 | .type ,object .type aa,object | .size ,4 .size aa,4 | : aa: | .long 30 .long 10 | .text .globl bb | .align 4 .align 2 | .globl func .type bb,object | func: .size bb,2 | . . . bb: | movw $40,2(%ebp) .value 20 | . . . static long aa = 10。 } 例 題 1 .data | .align 4 .align 4 | .type ,object .type aa,object | .size ,4 .size aa,4 | : aa: | .long 30 .long 10 | .text .globl bb | .align 4 .align 2 | .globl func .type bb,object | func: .size bb,2 | . . . bb: | movw $40,2(%ebp) .value 20 | . . . static long aa = 10。 } 例 題 1 .data | .align 4 .align 4 | .type ,object .type aa,object | .size ,4 .size aa,4 | : aa: | .long 30 .long 10 | .text .globl bb | .align 4 .align 2 | .globl func .type bb,object | func: .size bb,2 | . . . bb: | movw $40,2(%ebp) .value 20 | . . . static long aa = 10。 } 例 題 1 .data | .align 4 .align 4 | .type ,object .type aa,object | .size ,4 .size aa,4 | : aa: | .long 30 .long 10 | .text .globl bb | .align 4 .align 2 | .globl func .type bb,object | func: .size bb,2 | . . . bb: | movw $40,2(%ebp) .value 20 | . . . static long aa = 10。 } 例 題 1 .data | .align 4 .align 4 | .type ,object .type aa,object | .size ,4 .size aa,4 | : aa: | .long 30 .long 10 | .text .globl bb | .align 4 .align 2 | .globl func .type bb,object | func: .size bb,2 | . . . bb: | movw $40,2(%ebp) .value 20 | . . . static long aa = 10。 } 例 題 2 func(i) long 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到 寄存器 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到 寄存器 func(j)
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1