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

正文內(nèi)容

06-第6章-運行時存儲空間的組織和管理-編譯原理-中國科(留存版)

2025-02-13 03:14上一頁面

下一頁面
  

【正文】 ta | .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。 根據(jù)所生成的匯編程序來解釋程序中四個變 量的存儲分配 、 生存期 、 作用域和置初值方式等方面 的區(qū)別 static long aa = 10。 temp := x。 show。 show end。 var r: real。 begin write(r: 5: 3) end。 var r: real。 writeln end. dynamic show small small show show show 非局部名字的訪問 實現(xiàn)動態(tài)作用域的方法 ? 深訪問 – 用控制鏈搜索運行棧 , 尋找包含該非局部名字的第一個活動記錄 ? 淺訪問 – 為每個名字 在 靜態(tài)分配的存儲空間 中保存它的當(dāng)前值 – 當(dāng)過程 p的新活動出現(xiàn)時 , p的局部名字 n使用在靜態(tài)數(shù)據(jù)區(qū)分配給 n的存儲單元 。 show。 small。 begin return m+n end。 begin c end. b調(diào)用 f時,用傳遞過來的訪問鏈來建立 f的訪問鏈 訪 問 鏈 訪 問 鏈 param c m b f, 訪 問 鏈 b 非局部名字的訪問 program ret (input, output)。 begin m := 0。 q = dangle ( )。 { /? begin of B2 ?/ int a = 2。 8 }a。 long i。 4 char c2。 8 }a。 B2 int b = 3。 begin c end. 函數(shù) f作為參數(shù)傳遞時,怎樣在 f被激活時建立它的訪問鏈 非局部名字的訪問 program param(input, output)。 procedure c。 b(f) end. a ret b addm 非局部名字的訪問 program ret (input, output)。 var r: real。 show end。 show。 small。 show。 writeln end. dynamic show small small show show show r dynamic r ? show 靜態(tài)區(qū) 使用值的地方 棧區(qū) 暫存值的地方 非局部名字的訪問 program dynamic(input, output)。 procedure show。 procedure small。 例如: 調(diào)用 swap(i, a[i]) begin temp := x。 int num。 short dd = 40。 short dd = 40。 pushl %ebp 老的基地址指針壓棧 { movl %esp,%ebp修改 基地址指針 long j。 subl $4,%esp 為 j分配空間 j= i 1。 movl 8(%ebp),%edx 取 i到 寄存器 func(j)。 subl $4,%esp 為 j分配空間 j= i 1。 short dd = 40。 short dd = 40。 i := a[i]。 begin temp := x。 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 := 。 var r: real。 begin write(r: 5: 3) end。 var r: real。 return addm end。 begin m := 0。 function f(n: integer): integer。 }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/ 聲 明 作 用 域 int a = 0。 1 char c2。 }b。 double f。 0 char c1。 { /? begin of B1 ?/ int b = 1。 begin writeln(h(2)) end 。 procedure c。 function addm (n: integer): integer。 begin writeln (g(2)) end。 writeln end. dynamic show small small show show show 非局部名字的訪問 program dynamic(input, output)。 procedure show。 begin write(r: 5: 3) end。 var r: real。 show end。 show。 writeln。 small。 var temp: integer。 } 例 題 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。 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。 pop ebp ret 即 pop eip(下條指令地址 ) . . . . . . ebp esp 參數(shù) i 返址 例 題 2 func(i) func: long i。 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 把實參 j的值壓棧 call func 函數(shù)調(diào)用 addl $4,%esp 恢復(fù)棧頂指針 L1: leave 即 mov ebp, esp。 j= i 1。 func( ) { static long cc = 30。 … … … … } struct student st[10000]。 var temp: integer。 show end。 var r: real。 begin write(r: 5: 3) end。 var r: real。 small。 show。 small。 begin r := 。 var m: integer。 begin m := 0。 var m: integer。 全局棧式存儲分配 棧上可變長數(shù)據(jù) 活動記錄的長度在編譯時不能確定的情況 ? 例:局部數(shù)組的大小要等到過程激活時才能確定 備注: Java語言的實現(xiàn)是將它們分配在堆上 全局棧式存儲分配 訪問動態(tài)分配的數(shù)組 控制鏈 數(shù)組 A的指針 數(shù)組 B的指針 top_sp base_sp . . . . . . . . . 棧 (1) 編譯時,在活動記錄中為這樣的數(shù)組分配存放數(shù)組指針的單元 全局棧式存儲分配 訪問動態(tài)分配的數(shù)組 (2) 運行時,這些指針指向分配在棧頂?shù)臄?shù)組存儲空間 控制鏈 數(shù)組 A的指針 數(shù)組 B的指針 top_sp base_sp . . . . . . . . . 棧 數(shù)組 A 數(shù)組 B 全局棧式存儲分配 訪問動態(tài)分配的數(shù)組 (3) 運行時,對數(shù)組 A和 B的訪問都要通過相應(yīng)指針來間接訪問 控制鏈 數(shù)組 A的指針 數(shù)組 B的指針 top_sp base_sp . . . . . . . . . 棧 數(shù)組 A 數(shù)組 B 全局棧式存儲分配 訪問動態(tài)分配的數(shù)組 q的數(shù)組 q的活動記錄 p的數(shù)組 p的活動記錄 控制鏈 top_sp base_sp 數(shù)組 A的指針 數(shù)組 B的指針 數(shù)組 A 數(shù)組 B 控制鏈 . . . . . . . . . 棧 全局棧式存儲分配 懸空引用 懸空引用: 引用某個已被釋放的存儲單元 全局棧式存儲分配 懸空引用 懸空引用: 引用某個已被釋放的存儲單元 例: main中引用 p指向的對象 main( ) { | int ? dangle ( ) { int ?q。 int b = 0。 4 double f。編譯原理和技術(shù) 中國科學(xué)技術(shù)大學(xué) 計算機
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1