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

正文內(nèi)容

目標程序運行時的存儲組織概論-wenkub

2023-03-12 02:26:21 本頁面
 

【正文】 1. 概述 2. 棧式存儲分配的實現(xiàn) 1) 簡單的棧式存儲分配的實現(xiàn) 2) 嵌套過程語言的棧式實現(xiàn) 3) 分程序結(jié)構(gòu)的存儲管理 3. 參數(shù)傳遞 4. 過程調(diào)用、過程進入和過程返回 概述 任務(wù):編譯程序?qū)δ繕顺绦蜻\行時的數(shù)據(jù)空間的組織和管理(設(shè)計運行環(huán)境和分配存儲) 如 通常棧式存儲分配布局可為: 目標代碼區(qū) 靜態(tài)數(shù)據(jù)區(qū) Stack heap 運行環(huán)境和存儲分配設(shè)計分析 邏輯階段:在目標代碼生成前,作準備 實質(zhì): 關(guān)聯(lián)( Binding) 將源程序的文本 ? 程序運行動作的實現(xiàn) 源文件中的名字 N ? 運行時的存儲 S 在語義學中,使用術(shù)語 environment函數(shù)表示 env: N→S (N 到 S的映射 ) 靜態(tài)文本中 運行時動作及為實現(xiàn)其動作的準備 (與運行時數(shù)據(jù)對象的表示有關(guān))過程定義 過程名 執(zhí)行過程體 過程體 控制數(shù)據(jù)對象的分配,為執(zhí)行過程體使用源文本中同樣的名字 目標程序中不同的數(shù)據(jù)空間因為一個過程可以是遞歸的,這時同一個名字在不同的時間可能代表不同的存儲單元 決定存儲管理復雜程度的因素——源語言本身1. 允許的數(shù)據(jù)類型的多少2 .語言中允許的數(shù)據(jù)項是 靜態(tài)確定 動態(tài)確定3 .程序結(jié)構(gòu) 決定名字的作用域的規(guī)則和結(jié)構(gòu)A . 段結(jié)構(gòu)B . 過程定義不嵌套,只允許過程遞歸調(diào)用C . 分程序結(jié)構(gòu)分程序嵌套過程定義嵌套存儲分配方案策略:? 靜態(tài)存儲分配? 動態(tài)存儲分配——棧式 堆式 聲明的作用域 詞法作用域 動態(tài)作用域例: ( 1 ) p r og ram dyna mic( i ,0)。(6) v ar r :r eal。(10 ) sho w。 small 。 ? 可變 (動態(tài) )數(shù)組: 若一個數(shù)組所需的存儲空間的大小在編譯時就已知道,則稱它為確定數(shù)組,否則稱為可變 (動態(tài) )數(shù)組。 ? begin ? ? end。? 局部變量 (數(shù)據(jù))? 保存運行過程前的狀態(tài) (返回地址,寄存器值??)? 存取鏈 (可選) 對于非局部量的引用。 ? proc Q ? …… ? end Q。 ? 設(shè)法跟蹤每個外層過程的最新活動記錄 AR的位置。 程序結(jié)構(gòu)圖 ?? proc R( c , d)。 end /* Q*/ call Q ?? Q(z)。 integer m,n。 L3: 2 end。 end。但這種做法是極為低效的。 例如:如果有一個從第 5層分程序轉(zhuǎn)出到達第 1層分程序的標號 L,雖然在第 5層分程序工作時知道 L所屬的層數(shù),我們極易從DISPLAY中獲得第 1層分程序的活動記錄基址( SP),但是怎么知道第 1層分程序進入時的 TOP呢?唯一的辦法是從 5,4,3和 2各層順序退出。這樣,上述的第二個問題便可解決。而過程體分程序(假定是一個分程序)當作是它所管轄的第 1層分程序。 5. 過程所轄的各分程序的局部數(shù)據(jù)單元。 ( b) 進 入 分 程 序 B1。 (2) var x:integer。 a[j]:=x (5) end。 (4) var temp:integer。 (10)begin (11) a:=1。writeln(‘ b=‘ ,b) (14)end. 帶有過程 swap的 PASCAL程序 ? 傳地址(變量參數(shù)) 例如:過程 swap(var x,y:integer)。 swap(a,b); 其結(jié)果: a,b調(diào)用前的值不改變。 procedure swap( x,y:integer)。 其結(jié)果等價于執(zhí)行下列運算: x :=a; y :=b; temp :=x; x :=y; y :=temp 傳地址 的實現(xiàn) ( call by reference )(callbyaddress)(callbylocation) 把實在參數(shù)的地址傳遞給相應的形參,即 調(diào)用過程把一個指向?qū)崊⒌拇鎯Φ刂返闹羔槀鬟f給被調(diào)用過程相應的形參: 1實在參數(shù)是一個名字,或具有左值的表達式 傳遞左值 2實在參數(shù)是無左值的表達式 計算值,放入一存儲單元,傳此存儲單元地址 3目標代碼中,被調(diào)用過程對形參的引用變成對傳遞給被調(diào)用過程的指針的間接引用 procedure swap( x,y:integer)。) a1所指單元的內(nèi)容置為 a2所指單元值 4( y :=temp) a2所指單元的內(nèi)容置為 temp的值 (1)swap(x,y) (2)int *x,*y。 *y=temp。 (10)} 在一個值調(diào)用過程中使用指針的 C程序 在 C程序中無傳地址所以用指針實現(xiàn)。 begin m:=3。 function f(n:integer):integr。 ? (2)procedure b(function h(n:integer):integer)。 ? (6) function f(n:integer):integr。 ? (9)begin ? (10) c ? (11)end 圖 1027 嵌套過程作為參數(shù)傳遞 p ar am c 存取鏈 m b f . 存取鏈圖 10 28 連同存取鏈一起 傳遞過程實參 各種數(shù)據(jù)對象的存儲分配 數(shù)據(jù)對象 name 名字,名稱
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1