最新第十章目標(biāo)程序運行時的存儲組織_第1頁
最新第十章目標(biāo)程序運行時的存儲組織_第2頁
最新第十章目標(biāo)程序運行時的存儲組織_第3頁
最新第十章目標(biāo)程序運行時的存儲組織_第4頁
最新第十章目標(biāo)程序運行時的存儲組織_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第十章第十章 目標(biāo)程序目標(biāo)程序運行時的運行時的存儲組織存儲組織 10.1 概述概述10. 2數(shù)據(jù)表示數(shù)據(jù)表示10.3目標(biāo)程序運行時的棧式存儲組織目標(biāo)程序運行時的棧式存儲組織10.4 參數(shù)傳遞參數(shù)傳遞10.5堆式存儲組織的討論堆式存儲組織的討論概述-代碼生成解決語義gap高級語言支持的概念type value expressionvariable procedurefunction parameters目標(biāo)機支持的概念 bits bytes wordsregistersstack addressroutine例程(sub routine)概述代碼生成前如何安排目標(biāo)機資源運行時組織的幾個問題運行時

2、組織的幾個問題數(shù)據(jù)表示-如何在目標(biāo)機中表示每個源語言類型的值表達式求值-如何組織表達式的計算存儲分配-如何組織不同作用域變量的存儲過程實現(xiàn)-如何以例程實現(xiàn)過程,函數(shù),參數(shù)傳遞概述概述任務(wù):編譯程序?qū)δ繕?biāo)程序運行時的組織(設(shè)任務(wù):編譯程序?qū)δ繕?biāo)程序運行時的組織(設(shè)計運行環(huán)境和分配存儲)計運行環(huán)境和分配存儲) 如如 通常存儲區(qū)布局通常存儲區(qū)布局可為:可為: 目標(biāo)代碼區(qū)目標(biāo)代碼區(qū) 靜態(tài)數(shù)據(jù)區(qū)靜態(tài)數(shù)據(jù)區(qū) stack heap運行環(huán)境和存儲分配運行環(huán)境和存儲分配設(shè)計分析設(shè)計分析邏輯階段:在目標(biāo)代碼生成前,作準(zhǔn)備邏輯階段:在目標(biāo)代碼生成前,作準(zhǔn)備實質(zhì):實質(zhì): 關(guān)聯(lián)(關(guān)聯(lián)(binding)將源程序的文本將源

3、程序的文本 程序運行動作的實現(xiàn)程序運行動作的實現(xiàn) 源文件中的名字源文件中的名字n 運行時的存儲運行時的存儲s s在語義學(xué)中,使用術(shù)語在語義學(xué)中,使用術(shù)語environment函數(shù)表示函數(shù)表示env: ns (ns (n到到s s的映射的映射) )靜靜態(tài)態(tài)文文本本中中 運運行行時時動動作作及及為為實實現(xiàn)現(xiàn)其其動動作作的的準(zhǔn)準(zhǔn)備備 (與與運運行行時時數(shù)數(shù)據(jù)據(jù)對對象象的的表表示示有有關(guān)關(guān))過過程程定定義義 過過程程名名執(zhí)執(zhí)行行過過程程體體 過過程程體體 控控制制數(shù)數(shù)據(jù)據(jù)對對象象的的分分配配,為為執(zhí)執(zhí)行行過過程程體體使使用用源源文文本本中中同同樣樣的的名名字字 目目標(biāo)標(biāo)程程序序中中不不同同的的數(shù)數(shù)據(jù)據(jù)

4、空空間間因因為為一一個個過過程程可可以以是是遞遞歸歸的的,這這時時同同一一個個名名字字在在不不同同的的時時間間可可能能代代表表不不同同的的存存儲儲單單元元決定運行管理復(fù)雜程度的因素決定運行管理復(fù)雜程度的因素源語言本身源語言本身1. 允許的數(shù)據(jù)類型的多少允許的數(shù)據(jù)類型的多少2語言中允許的數(shù)據(jù)項是語言中允許的數(shù)據(jù)項是 靜態(tài)確定靜態(tài)確定 動態(tài)確定動態(tài)確定3程序結(jié)構(gòu)程序結(jié)構(gòu) 決定名字的作用域的規(guī)則和結(jié)構(gòu)決定名字的作用域的規(guī)則和結(jié)構(gòu)a 段結(jié)構(gòu)段結(jié)構(gòu)b 過程定義不嵌套,只允許過程遞歸調(diào)用過程定義不嵌套,只允許過程遞歸調(diào)用c 分程序結(jié)構(gòu)分程序結(jié)構(gòu)分程序嵌套分程序嵌套過程定義嵌套過程定義嵌套 4 4存儲類別的

5、多少存儲類別的多少globallocalstaticdynamic術(shù)語術(shù)語 靜態(tài)存儲分配:靜態(tài)存儲分配:在編譯時能確定目標(biāo)程序運行中所在編譯時能確定目標(biāo)程序運行中所需的數(shù)據(jù)空間的大小,編譯時安排好目標(biāo)程序運行時的需的數(shù)據(jù)空間的大小,編譯時安排好目標(biāo)程序運行時的全部數(shù)據(jù)空間,確定每個數(shù)據(jù)對象的存儲位置,這種分全部數(shù)據(jù)空間,確定每個數(shù)據(jù)對象的存儲位置,這種分配策略為靜態(tài)存儲分配配策略為靜態(tài)存儲分配。 動態(tài)存儲分配:動態(tài)存儲分配:在編譯時無法知道它在運行是需要在編譯時無法知道它在運行是需要多少空間,它需要的數(shù)據(jù)空間只有在程序運行時才能動多少空間,它需要的數(shù)據(jù)空間只有在程序運行時才能動態(tài)確定,則稱這種

6、存儲分配方式為動態(tài)存儲分配。態(tài)確定,則稱這種存儲分配方式為動態(tài)存儲分配。棧式堆式動態(tài)存儲分配動態(tài)存儲分配 例例 procedure a(m,n:integer); begin real z; array bm:n; begin end; end;聲明的作用域聲明的作用域 詞法作用域詞法作用域 動態(tài)作用域動態(tài)作用域例:例:(1)program dynamic(i,0);(2) var r:real(3) procedure show;(4) begin write(r:5:3) end;(5) procedrue small;(6) var r:real;(7) begin r:=0.125;

7、show end;(8) begin(9) r:=0.25;(10) show; small; write/n;(11) show; small; write/n;(12) end.lexical scope0.250 0.2500.250 0.250dynamic scope0.250 0.1250.250 0.125數(shù)據(jù)表示各種數(shù)據(jù)對象的存儲分配數(shù)據(jù)對象的屬性 name 名字,名稱 type 類型 location 內(nèi)存地址 value 值 component 成分 目標(biāo)程序運行時的存儲組織目標(biāo)程序運行時的存儲組織存儲分配策略:存儲分配策略:簡單的棧式分配方案簡單的棧式分配方案 嵌套過程的

8、棧式分配方案嵌套過程的棧式分配方案 分程序結(jié)構(gòu)的存儲分配方案分程序結(jié)構(gòu)的存儲分配方案靜態(tài)存儲分配靜態(tài)存儲分配動態(tài)存儲分配動態(tài)存儲分配棧式棧式堆式堆式l 術(shù)語術(shù)語-過程活動記錄:過程活動記錄: ar為說明方便,假定程序是由過程組成,過程區(qū)分為源文本,為說明方便,假定程序是由過程組成,過程區(qū)分為源文本,運行時稱作過程的激活。運行時稱作過程的激活。一個過程的一次執(zhí)行所需要的信息使用一個連續(xù)的存儲區(qū)來一個過程的一次執(zhí)行所需要的信息使用一個連續(xù)的存儲區(qū)來管理,這個區(qū)管理,這個區(qū) (塊)叫做一個活動記錄或(塊)叫做一個活動記錄或frame(幀幀)一般這個段要記錄:一般這個段要記錄:l 臨時值,如計算表達式

9、時的中間工作單元。臨時值,如計算表達式時的中間工作單元。l 局部變量局部變量(數(shù)據(jù))(數(shù)據(jù))l 保存運行過程前的狀態(tài)保存運行過程前的狀態(tài) (返回地址,寄存器值(返回地址,寄存器值)l 存取鏈存取鏈(可選)(可選) 對于非局部量的引用。對于非局部量的引用。l 控制鏈控制鏈(可選)(可選) 指向調(diào)用者的活動記錄,釋放棧。指向調(diào)用者的活動記錄,釋放棧。l 實參實參(形式單元)(形式單元)l 返回值返回值(對函數(shù))(對函數(shù))(有時可使用寄存器存放返回值)(有時可使用寄存器存放返回值) 簡單的棧式分配方案簡單的棧式分配方案 程序結(jié)構(gòu)特點程序結(jié)構(gòu)特點:過程定義不嵌套,過程可過程定義不嵌套,過程可遞歸調(diào)用,

10、含可變數(shù)組遞歸調(diào)用,含可變數(shù)組; 例例: main 全局變量的說明全局變量的說明 proc r end r; proc q end q; 主程序執(zhí)行語句主程序執(zhí)行語句 end main臨時工作單元臨時工作單元局部數(shù)組的內(nèi)情向量局部數(shù)組的內(nèi)情向量局部簡單變量局部簡單變量實參(形式單元)實參(形式單元)參數(shù)個數(shù)參數(shù)個數(shù)保存運保存運 行過程前的狀態(tài)(返回地址,寄存行過程前的狀態(tài)(返回地址,寄存器值器值)控制鏈(老控制鏈(老sp) top-sp-無嵌套定義的過程活動記錄內(nèi)容main-q-r main-q-q top- r 的活動記錄的活動記錄 q 的活動記錄的活動記錄 sp- q 的活動記錄的活動記錄

11、 q 的活動記錄的活動記錄 主程序全局主程序全局 主程序全局主程序全局 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) top指針:指向已占用棧頂單元sp指針:指向現(xiàn)行過程活動記錄起點主程序全主程序全局局數(shù)據(jù)區(qū)q活動記錄主程序全主程序全局局數(shù)據(jù)區(qū)r活動記錄main-qmain-rmain 全局變量的說明全局變量的說明proc rend r;proc q end q;主程序執(zhí)行語句主程序執(zhí)行語句 end main top r的數(shù)組區(qū)的數(shù)組區(qū) r的活動記錄的活動記錄 sp q 的活動記錄的活動記錄 主程序全局主程序全局 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) 分配了數(shù)組區(qū)之后的運行棧 嵌套過程語言的棧式嵌套過程語言的棧式分配方案分配方案l主要

12、特點主要特點: (語言)一個過程可以引用包圍它的任(語言)一個過程可以引用包圍它的任一外層過程所定義的標(biāo)識符(如變量,一外層過程所定義的標(biāo)識符(如變量,數(shù)組或過程等)。數(shù)組或過程等)。 (實現(xiàn))一個過程可以引用它的任一外(實現(xiàn))一個過程可以引用它的任一外層過程的最新活動記錄中的某些數(shù)據(jù)。層過程的最新活動記錄中的某些數(shù)據(jù)。 關(guān)鍵技術(shù):解決對非局部量的引用(存關(guān)鍵技術(shù):解決對非局部量的引用(存?。?。?。?設(shè)法跟蹤每個外層過程的最新活動記錄設(shè)法跟蹤每個外層過程的最新活動記錄ar的位置。的位置。 跟蹤辦法:跟蹤辦法: 1. 用靜態(tài)鏈(如用靜態(tài)鏈(如pl/0的的sl)。)。 2. 用用display表

13、。表。p p222222圖圖10.1110.11中的嵌套過程的程序中的嵌套過程的程序sortsort readarray readarray exchange exchange quicksort quicksort partition partition存取鏈:靜態(tài)鏈,存取非局部變存取鏈:靜態(tài)鏈,存取非局部變量,指向包含該過程的直接外量,指向包含該過程的直接外層層控制鏈:動態(tài)鏈,鏈接調(diào)用該過控制鏈:動態(tài)鏈,鏈接調(diào)用該過程那個過程的活動記錄首地址程那個過程的活動記錄首地址如p224 圖10.15的運行棧一、用靜態(tài)鏈存取鏈存取鏈控制鏈控制鏈局部變量局部變量i,j存取鏈存取鏈控制鏈控制鏈局部變量局

14、部變量k,v存取鏈存取鏈控制鏈控制鏈局部變量局部變量k,v存取鏈存取鏈控制鏈控制鏈變量變量a,xtopspsortquicksortquicksortpartitionexchange sort sort readarray readarray exchange exchange quicksort quicksort partition partitionsort的arq的arq的arp的are的ar目標(biāo)代碼解釋執(zhí)行時數(shù)據(jù)棧的布目標(biāo)代碼解釋執(zhí)行時數(shù)據(jù)棧的布局(運行棧的存儲分配)局(運行棧的存儲分配)每個過程的每個過程的arar有有3 3個聯(lián)系單元:個聯(lián)系單元:slsl: 靜態(tài)鏈靜態(tài)鏈,指向,

15、指向定義定義該過程的該過程的直接外過程直接外過程 (或主程序)運行時(或主程序)運行時最新最新數(shù)據(jù)段的基地址數(shù)據(jù)段的基地址。dldl: 動態(tài)鏈動態(tài)鏈,指向,指向調(diào)用調(diào)用該過程前正在運行過該過程前正在運行過 程的數(shù)據(jù)段基地址。程的數(shù)據(jù)段基地址。rara: 返回地址返回地址,記錄調(diào)用該過程時,記錄調(diào)用該過程時目標(biāo)程序目標(biāo)程序的的斷點斷點,即調(diào)用過程指令的下一條指令的地址。,即調(diào)用過程指令的下一條指令的地址。局部變量中間結(jié)果 目標(biāo)代碼的解釋執(zhí)行目標(biāo)代碼的解釋執(zhí)行 運行棧運行棧s s m m調(diào)用過程調(diào)用過程p p ra ra dl dl sl slb. ttbpm解決對非局部量的引用(存?。┙鉀Q對非局

16、部量的引用(存?。┯糜胐isplay表表display表表-嵌套層次顯示表嵌套層次顯示表當(dāng)前激活過程的層次為當(dāng)前激活過程的層次為k,它的,它的display表含有表含有k+1個單元,依次存放著現(xiàn)行層,直接外層個單元,依次存放著現(xiàn)行層,直接外層直至最外層的每一過程的直至最外層的每一過程的最新活動記錄的基地最新活動記錄的基地址址如果過程如果過程 p,層次為層次為i 過程過程q, 是是p的直接外層為的直接外層為i-1例:例:program main(i,0); 程序結(jié)構(gòu)圖程序結(jié)構(gòu)圖 proc r(c,d); r end /*r*/ proc p (a); 主主 proc q (b); p q cal

17、l r r(x,y); end /*q*/ call q q(z); call p end /*p*/ call r p(w);); r(u,v);); end /*main*/用用display表的方案表的方案(1)主程序主程序-(2)p-(3)q-(4)r p 的的活動記錄活動記錄主程序的主程序的活動記錄活動記錄 d1d0displaysptop主程序的主程序的活動記錄活動記錄 d0spdisplaytop(1)(2)用用display表的方案表的方案 主程序主程序-p-q-rr 的的活動記錄活動記錄 q 的的活動記錄活動記錄 p 的的活動記錄活動記錄主程序的主程序的活動記錄活動記錄q 的

18、的活動記錄活動記錄 p 的的活動記錄活動記錄主程序的主程序的活動記錄活動記錄 displayd2d1d0d2d1d0 displaysptoptopsp(3)(4)討論p1調(diào)用過程p2而進入p2后,p2應(yīng)如何建立自己的display分兩種情況:p1p2call p2(a)p0p2p1call p2(b) 0 老老 sp 1 返回地址返回地址 2 全局全局 display地址地址 3 參數(shù)個數(shù)參數(shù)個數(shù) 4形式單元形式單元 . . . d display . . . 簡單變量簡單變量 數(shù)組內(nèi)情向量數(shù)組內(nèi)情向量 臨時變量臨時變量 display表作為表作為ar的一部分的一部分topspdisplay

19、表的維護和建立表的維護和建立 display表表d 運行棧運行棧 0 主程活動記錄地址主程活動記錄地址 1 r活動記錄地址活動記錄地址 . 分程序結(jié)構(gòu)分程序結(jié)構(gòu)procedure a(m,n); integer m,n; b1:begin real z; array bm:n; b2:begin real d, e; l3: 2 end; b4:begin array c1:m; 1 b5:begin real e; l6: 5 4 end; end; l8:end; 分程序結(jié)構(gòu)的存儲分程序結(jié)構(gòu)的存儲分配方案分配方案 處理分程序結(jié)構(gòu)存儲分配方案的一種處理分程序結(jié)構(gòu)存儲分配方案的一種簡單辦法是,

20、把分程序看成簡單辦法是,把分程序看成 “無名無參過無名無參過 程程”,它在哪里定義就在哪里被調(diào)用。因,它在哪里定義就在哪里被調(diào)用。因此,可以把處理過程的存儲辦法應(yīng)用到處此,可以把處理過程的存儲辦法應(yīng)用到處理分程序中。但這種做法是極為低效的。理分程序中。但這種做法是極為低效的。 一則,每逢進入一則,每逢進入 一個分程序,就照樣建立一個分程序,就照樣建立連接數(shù)據(jù)和連接數(shù)據(jù)和display表表,這是不必要的。這是不必要的。 二則二則 ,當(dāng)從內(nèi)層分程序向外層轉(zhuǎn)移時,可,當(dāng)從內(nèi)層分程序向外層轉(zhuǎn)移時,可能同時要結(jié)束若干個分程序。能同時要結(jié)束若干個分程序。 按照過程處理辦法,意味著必須一層按照過程處理辦法,

21、意味著必須一層一層地通過一層地通過“返回返回” 來恢復(fù)所要到達的來恢復(fù)所要到達的那個分程序的數(shù)據(jù)區(qū),但不能直接到達。那個分程序的數(shù)據(jù)區(qū),但不能直接到達。例如:如果有一個從第例如:如果有一個從第5層分程序轉(zhuǎn)出到達層分程序轉(zhuǎn)出到達第第1層分程序的標(biāo)號層分程序的標(biāo)號l,雖然在第,雖然在第5層分程層分程序工作時知道序工作時知道l所屬的層數(shù),我們極易從所屬的層數(shù),我們極易從display中獲得第中獲得第1層分程序的活動記層分程序的活動記錄基址(錄基址(sp),但是怎么知道第),但是怎么知道第1層分程層分程序進入時的序進入時的top呢?唯一的辦法是從呢?唯一的辦法是從 5,4,3和和2各層順序退出。但這種

22、辦法是很各層順序退出。但這種辦法是很浪費時間的。浪費時間的。 為了解決上述問題,可采取兩種措施。第為了解決上述問題,可采取兩種措施。第一,對每個過程或分程序都建立有自己一,對每個過程或分程序都建立有自己的棧頂指示器的棧頂指示器top,代替原來僅有過程,代替原來僅有過程的棧頂指示器的棧頂指示器, 每個每個top的值保存在各自的值保存在各自活動記錄中。這樣,上述的第二個問題活動記錄中。這樣,上述的第二個問題便可解決。第二,不把分程序看作便可解決。第二,不把分程序看作“無無參過程參過程”,每個分程序享用包圍它的那,每個分程序享用包圍它的那個最近過程的個最近過程的display。每個分程序都。每個分程

23、序都隸屬于某個確定的過程,分程序的層次隸屬于某個確定的過程,分程序的層次是相對于它所屬的那個過程進行編號的。是相對于它所屬的那個過程進行編號的。: 每個過程被當(dāng)作是每個過程被當(dāng)作是0層分程序。而過程體層分程序。而過程體分程序(假定是一個分程序)當(dāng)作是它分程序(假定是一個分程序)當(dāng)作是它所管轄的第所管轄的第1層分程序。層分程序。這樣,每個過程的活動記錄所含的內(nèi)容有:這樣,每個過程的活動記錄所含的內(nèi)容有:1.過程的過程的top值,它指向過程活動記錄的值,它指向過程活動記錄的棧頂位置。棧頂位置。2.連接數(shù)據(jù),共四項:連接數(shù)據(jù),共四項: (1)老老sp值;值;(2)返回地址;返回地址; (3)全局全局

24、dispay地址;地址;(4)調(diào)用時的棧頂單元地址,老調(diào)用時的棧頂單元地址,老top。 3. 參數(shù)個數(shù)和形式單元參數(shù)個數(shù)和形式單元 4. dispay表。表。5. 過程所轄的各分程序的局部數(shù)據(jù)單元。過程所轄的各分程序的局部數(shù)據(jù)單元。 對于每個分程序來說,它們包括:對于每個分程序來說,它們包括:(1)分程序的分程序的top值。當(dāng)進入分程序時它值。當(dāng)進入分程序時它含現(xiàn)行棧頂?shù)刂?,以后,用來定義棧的含現(xiàn)行棧頂?shù)刂罚院?,用來定義棧的新高度(分程序的新高度(分程序的top值);值);(2)分程序的局部變量,分程序的局部變量, 數(shù)組內(nèi)情向量和數(shù)組內(nèi)情向量和臨時工作單元。臨時工作單元。 變 量 e b5

25、的 t o p 數(shù) 組 c 的 內(nèi) 情 向 量 變 量 e 和 d b4 的 t o pb2的 top 數(shù) 組 b 的 內(nèi) 情 向 量 變 量 zkb1 的 t o pdd i s p l a y6形 式 單 元 m,n5參 數(shù) 個 數(shù):24調(diào) 用 時 的 棧 頂 地 址(老 t o p)3全 局 d i s p l a y 地 址2返 回 地 址1老 s p0過 程 的 t o p,指 向 活 動 記 錄 之 頂b z b1t o 數(shù) 組 b 數(shù) 組 b e db22的 t o pb 的 內(nèi) 情 向 量b 的 內(nèi) 情 向 量 z zb1 的 t o pb1的 t o pd i s p l a

26、 yd i s p l a y 形式單元 m,n 2 形式單元 m,n 2連 接 數(shù) 據(jù)連接 數(shù) 據(jù)a 的 t o pa 的 t o p (c) (d)(c )數(shù)組 b 分配之后; ( d )進入分程序b22; 數(shù) 組c 數(shù) 組 c 數(shù) 組b 數(shù) 組 b c的 向 量 內(nèi) 情 eb5的t o pc 的 內(nèi) 情 向 量b4的t o pb4的t o pb 的 內(nèi) 情 向 量b的 內(nèi) 情 向 量 z zb1的t o pb1 的t o pd i s p l a yd i s p l a y 形式單元 m,n 2 形式單元 m,n 2連接數(shù)據(jù)連 接 數(shù) 據(jù)a的t o pa的t o p (e) (f)(e

27、)進入分程序b4分配數(shù)組c之后; (f)進入分程序b5 。 參數(shù)傳遞參數(shù)傳遞(1)procedure exchangel(i,j:integer);(2) var x:integer;(3) begin;(4) x:=ai; ai:=aj; aj:=x(5) end; 帶有非局部變量和形參的帶有非局部變量和形參的pascal過程過程非局變量非局變量ai和和aj的值進行交換,的值進行交換,i,j為形參(在為形參(在這里是傳值)這里是傳值) (1)program reference(input,output);(2)var a,b:integer;(3)procedure swap(var x,y

28、:integer);(4) var temp:integer;(5) begin (6) temp:=x;(7) x:=y;(8) y:=temp(9) end;(10)begin(11) a:=1; b:=2;(12) swap(a,b);(13) writeln(a=,a);writeln(b=,b)(14)end. 帶有過程帶有過程swap的的pascal程序程序 傳地址(變量參數(shù))傳地址(變量參數(shù)) 例如:過程例如:過程 swap(var x,y:integer); swap(a,b);();( a,b為調(diào)用時的為調(diào)用時的實參實參 ) 調(diào)用結(jié)果調(diào)用結(jié)果a,b的值被改變。的值被改變。 傳

29、值(值調(diào)用)傳值(值調(diào)用)特點是對形式參數(shù)的任何運算不影響實參的值。特點是對形式參數(shù)的任何運算不影響實參的值。 例如:過程例如:過程 swap(x,y:integer); swap(a,b);其結(jié)果:);其結(jié)果: a,b調(diào)用前的值不改變。調(diào)用前的值不改變。傳值傳值的實現(xiàn)的實現(xiàn) 1.形式參數(shù)當(dāng)作過程的局部變量處理,即形式參數(shù)當(dāng)作過程的局部變量處理,即在被調(diào)過程的活動記錄中開辟了形參的在被調(diào)過程的活動記錄中開辟了形參的存儲空間,這些存儲位置即是我們所說存儲空間,這些存儲位置即是我們所說的形式單元(用以存放實參)。的形式單元(用以存放實參)。 2.調(diào)用過程計算實參的值,并將其放在對調(diào)用過程計算實參的

30、值,并將其放在對應(yīng)形式單元開辟的空間中。應(yīng)形式單元開辟的空間中。 3.被調(diào)用過程執(zhí)行時,就像使用局部變量被調(diào)用過程執(zhí)行時,就像使用局部變量一樣使用這些形式單元。一樣使用這些形式單元。procedure swap( x,y:integer); var temp:integer; begin temp:=x; x:=y; y:=temp end; 調(diào)用swap(a,b) 過程將不會影響a和b的值。 其結(jié)果等價于執(zhí)行下列運算: x :=a; y :=b; temp :=x; x :=y; y :=temp傳地址傳地址的實現(xiàn)的實現(xiàn)(call- by- reference )(call-by-addre

31、ss)(call-by-location) 把實在參數(shù)的地址傳遞給相應(yīng)的形參,即把實在參數(shù)的地址傳遞給相應(yīng)的形參,即 調(diào)用過程把一個指向?qū)崊⒌拇鎯Φ刂返闹羔槀髡{(diào)用過程把一個指向?qū)崊⒌拇鎯Φ刂返闹羔槀鬟f給被調(diào)用過程相應(yīng)的形參:遞給被調(diào)用過程相應(yīng)的形參:1實在參數(shù)是一個名字,或具有左值的表達式實在參數(shù)是一個名字,或具有左值的表達式-傳遞左值傳遞左值2實在參數(shù)是無左值的表達式實在參數(shù)是無左值的表達式-計算值,放入一計算值,放入一存儲單元,傳此存儲單元地址存儲單元,傳此存儲單元地址3目標(biāo)代碼中,被調(diào)用過程對形參的引用變成對目標(biāo)代碼中,被調(diào)用過程對形參的引用變成對傳遞給被調(diào)用過程的指針的間接引用傳遞給被

32、調(diào)用過程的指針的間接引用procedure swap( x,y:integer); var temp:integer; begin temp:=x; x:=y; y:=temp end; 調(diào)用swap(i,ai) 其結(jié)果等價于執(zhí)行下列運算: 1把 i和ai的地址分別放到x和y相應(yīng)的單元a1,a2 2( temp :=x;)temp的內(nèi)容置為a1所指單元中存的內(nèi)容 3 (x :=y;) a1所指單元的內(nèi)容置為a2所指單元值4( y :=temp) a2所指單元的內(nèi)容置為temp的值 (1)swap(x,y)(2)int *x,*y;(3) int temp;(4) temp=*x; *x=*y;

33、 *y=temp;(5)(6)main( )(7) int a=1,b=2;(8) swap(&a,&b);(9) printf(“a is now %d,b is now %dn”,a,b);(10) 在一個值調(diào)用過程中使用指針的在一個值調(diào)用過程中使用指針的c程序程序在在c程序中無傳地址所以用指針實現(xiàn)。程序中無傳地址所以用指針實現(xiàn)。過程調(diào)用的四元式序列過程調(diào)用的四元式序列 s call id() ,e epar t1par t2par tncall id,n過程調(diào)用的四元式序列過程調(diào)用的四元式序列(1)s call id()for 隊列.q的 每一項p do gen(par,

34、-,-,p);n:=n+1; gen(call,-,-,entry(id) (2) 1,e把e.place排在.q 的末端;(3) e 過程作為參數(shù)傳遞三種環(huán)境:詞法環(huán)境 傳遞環(huán)境 活動環(huán)境 program param(input,output); procedure b(function h(n:integer):integer);(*) var m:integer; begin m:=3; writeln(h(2) endb; procedure c;(*) var m:integer; function f(n:integer):integr;(&) begin f:=m+n e

35、ndf; begin m:=0; b(f) end c begin c end. (1)program param(input,output); (2)procedure b(function h(n:integer):integer); (3) begin writeln(h(2) endb; (4)procedure c; (5) var m:integer; (6) function f(n:integer):integr; (7) begin f:=m+n endf; (8)begin m := 0; b(f) end c; (9)begin (10) c (11)end 圖10-27

36、 嵌套過程作為參數(shù)傳遞 param c 存取鏈 m b 存取鏈圖 10-28 連同存取鏈一起 傳遞過程實參值結(jié)果傳遞除了未建立真正的別名之外,這個機制得到的結(jié)果與引用傳遞類似:在過程中復(fù)制和使用自變量的值,然后當(dāng)過程退出時,再將參數(shù)的最終值復(fù)制回自變量的地址。因此,這個方法有時也被稱為復(fù)制進,復(fù)制出,或復(fù)制存儲。值結(jié)果傳遞與引用傳遞的唯一區(qū)別在于別名的表現(xiàn)不同。例如,在以下的代碼中(c語法):void p (int x, int y)+x;+y;main()int a=1;p(a,a);return 0;在調(diào)用p之后,若使用了引用傳遞,則a的值為3;若使用了值結(jié)果傳遞,則a的值為2。 名字傳遞

37、這是傳遞機制中最復(fù)雜的參數(shù)了。由于名字傳遞的思想是直到在被調(diào)用的程序真正使用了自變量(作為一個參數(shù))之后才對這個自變量賦值,所以它還稱作延盡賦值(delayed evaluation)。因此,自變量的名稱或是它在調(diào)用點上的結(jié)構(gòu)表示取代了它對應(yīng)的參數(shù)的名字。例如在代碼void p (int x)+x;中,若做了一個如p(ai)的調(diào)用時,其結(jié)果是計算+(ai)。因此,若在p中使用x之前改變i,那么它的結(jié)果就與在引用傳遞或在值結(jié)果傳遞中的不同 int i;int a 10;void p (int x)+i;+x;main ()i=1;a1=1;a2=2;p(ai);return 0;對p的調(diào)用的結(jié)果

38、是將a2設(shè)置為3并保持a1不變。名字傳遞的解釋如下:在調(diào)用點上的自變量的文本被看作是它自己右邊的函數(shù),生當(dāng)在被用的過程的代碼中到達相應(yīng)的參數(shù)名時,就要計算它。我們總是在調(diào)用程序的環(huán)境中計算自變,而總是在過程的定義環(huán)境中執(zhí)行過程。建立內(nèi)情向量,分配內(nèi)存的目標(biāo)代碼(n維可變數(shù)組, type-每個元素占一個字)begin k:=1;n:=1;c:=0; while k=n do begin di:=ui-li+ 1; m:=m*di; c:=c*di+li; 把li,ui和di填進內(nèi)情向量表區(qū); k:=k+1 end; 申請m個空間, 令首地址為a;把n,c,type ,a填進內(nèi)情 向量表區(qū)end賦

39、值中數(shù)組元素的翻譯a v:=ev id | id ,e | ev | id , e | id e結(jié)構(gòu)(記錄),抽象數(shù)據(jù)類型對象類實例變量的存儲結(jié)構(gòu)(cir)class parent | class parent public int a,b,c; | public a,b,c; public void draw() .; | public virtual void draw(); | .class child:public parent | public d,e; | public void sift(); | void draw();堆式動態(tài)存儲分配堆變量堆空間的管理策略減少碎片的技術(shù)空間的

40、釋放c+的堆變量int *ptr;ptr=new int(5); int *ptr= new int 10delete ptrdelete ptr堆變量是可以在程序運行時根據(jù)需要隨時創(chuàng)建或刪除的變量c+的堆對象#includeclass myclasspublic: myclass(); myclass(int k,int j); void set(int,int)m=k;n=j; myclass();private: int m,n;myclass:myclass() set(0,0);coutdefaultendl;myclass:myclass(int k,int j) set(k,j)

41、;cout“m=“mendl;myclass: myclass() cout“destructor”endl;使用new和delete的示例#includeint main() cout“one”endl;myclass *ptr1=new myclass;delete ptr1;cout“two”endl;ptr1=new myclass(5,10);delete ptr1;return 0; onedefaltdestructortwom=5destructor堆式動態(tài)存儲分配const int arraysize=24;/ default sizeclass intarraypublic

42、:/operations performed on arrays intarray(int sz=arraysize); intarray(const intarray&); intarray() delete ia; intarray& operator= (const intarray&); int& operator (int); int getsize() return size;protected:/internal data representation int size; int * ia; intarray()函數(shù)的實現(xiàn),引入新的運算符newin

43、tarray:intarray (int sz) size= sz;/ allocate an integer array of size/ and set ia to point to itia= new int size;/ initialize arrayfor (int i=0;is. next = memptr = mem;memptr-s. usedsize = 1;memptr-s. freesize = memsize-1;for (p=memptr;(p-s. next!= memptr) &(p-s. freesize s. next);if (p-s. frees

44、ize nunits) return null;/* no block big enough */newp = p+p-s. usedsize;newp-s. usedsize= nunits;newp-s. freesize = p-s. freesize-nunits;newp-s.next = p-s. next;p-s. freesize=0;p-s. next= newp;memptr=newp;return (void *)(newp+1);void free (void *ap)header * bp, *p, *prev;bp= (header *) ap 1;for (pre

45、v= memptr, p=memptr-s. next;(p!=bp) &(p!= memptr); prev=p, p=p-s. next);if (p!=bp) return;/* corrupted list, do nothing */prev-s. freesize += p-s. usedsize + p-s. freesize;prev-s. next = p-s. next;memptr = prev;堆的自動管理-隱式存儲回收在一種需要完全動態(tài)的運行時環(huán)境的語言(oo語言,函數(shù)式語言lisp,ml)中,堆也必須類似地自動管理。自動存儲器管理涉及到了前面分配的但不再使用

46、的存儲器的回收,可能是在它被分配的很久以后,而沒有明確的對free的調(diào)用。這個過程稱作垃圾回收(grabage collection)。 垃圾回收垃圾回收程序-尋找可被引用的所有存儲器并釋所有未引用的存儲器。在存儲塊不再引用時,無論是直接還是通過指針間接的引用,識別這些存儲塊是一項比維護堆存儲 的列表復(fù)雜得多的任務(wù)。方法-對malloc的調(diào)用失敗,激活垃圾回收程序垃圾回收算法 mark and sweep隱式存儲回收mark and sweep算法 隱式存儲回收要求用戶程序和支持運行的回收子程序并行工作,因為回收程序需要知道分配給用戶程序的存儲塊何時不再使用。為了實現(xiàn)并行工作,在存儲塊中要設(shè)置

47、回收子程序訪問的信息。 存儲塊格式: 塊長度訪問計數(shù)標(biāo)記指針用戶使用空間回收過程分為兩個階段。 (1)第一個階段為標(biāo)記階段,對已分配的塊跟蹤程序中各指針的訪問路徑。如果某個塊被訪問過,就給這個塊加一個標(biāo)記。(2)第二個階段為回收階段,所有未加標(biāo)記的存儲塊回收到一起,并插入空閑塊鏈表中,然后消除在存儲塊中所加的全部標(biāo)記。面向?qū)ο蟮恼Z言中的動態(tài)存儲器面向?qū)ο蟮恼Z言中的動態(tài)存儲器面向?qū)ο蟮恼Z言在運行時環(huán)境中要求特殊的機制以完成其增添的特性:對象、方法、繼承以及動態(tài)聯(lián)編。面向?qū)ο笳Z言在對運行時方面的要求差異很大。smalltalk要求與lisp相似的完全動態(tài)環(huán)境c則保持c的基于棧的環(huán)境實現(xiàn)對象實現(xiàn)對象

48、的一個簡單機制是,初始化代碼將所有當(dāng)前的繼承特征(和方法)直接地復(fù)制到記錄結(jié)構(gòu)中(將方法當(dāng)作代碼指針)。但這樣做極浪費空間。另外一種方法是在執(zhí)行時將類結(jié)構(gòu)的一個完整的描述保存在每個點的存儲器中,并由超類指針維護繼承性(有時這也稱作繼承圖(inheritance graph)。接著同用于它的實例變量的域一起,每個對象保持一個指向其定義類的指針,通過這個類就可找到所有(局部和繼承的)的方法。此時,只記錄一次方法指針(在類結(jié)構(gòu)中),而且對于每個對象并不將其復(fù)制到存儲器中。由于是通過類繼承的搜索來找到這個機制的,所以該機制還實現(xiàn)繼承性與動態(tài)聯(lián)編。其缺 在于:雖然實例變量具有可預(yù)測的偏移量(正如在標(biāo)準(zhǔn)環(huán)

49、境中的局部變量一樣),方法卻沒有,而且它們必須由帶有查詢功能的符號表結(jié)構(gòu)中的名字維護。這是對于諸如smalltalk的高度動態(tài)語言的合理的結(jié)構(gòu),因為類結(jié)構(gòu)可以在執(zhí)行中改變。c+中選擇的方法將整個類結(jié)構(gòu)保存在環(huán)境中,計算出每個類的可用方法的代碼指針列表,并將其作為一個虛擬函數(shù)表(virtual function table)而存放在(靜態(tài))存儲器。它的優(yōu)點在于:可做出安排以使每個方法都有一個可預(yù)測的偏移量,而且也不再需要用一系列表查詢遍歷類的層次結(jié)構(gòu)?,F(xiàn)在每個對象都包括了一個指向相應(yīng)的虛擬函數(shù)表而不是類結(jié)構(gòu)的指針(當(dāng)然,這個指針的位置必須也有可預(yù)測的偏移量)。例c+類聲明:class apubl

50、ic:double x,y;void f();virtual void g();class b:public apublic:double z;void f();virtual void h();類a的一個對象應(yīng)出現(xiàn)在存儲器中(帶有它的虛擬函數(shù)表) 而類b的一個對象則應(yīng)如下所示: xyvtpa:gb:ha:gxyvtpz鎦怩崔蟉紗癙晅鉂匱蹏綝規(guī)泹嘼圇齕攖祒茶壀鍓孋儀禯牀彬罌貴馛瀱攗噋囑蔻瀦念灤驥恙晐鬶榝榾愲秉羰茹岜梟蛂淚斘殮華渼讀薪鄠逰剝涀妬轍畟存錙蕏韌鷀熅悪趶佇糽斂滅鞅諉箜砒夐誒蟨陁遇羌藄睸篃诪敍趰論涁仙傞鴜啜垮昒蒥質(zhì)鰲枵岫跀紷郻閴斬病僺茽鮸轎狒綠跪禎采麇曀崊疅爨駗粛跠炌翾靌餝韤覡啥騥樓愸汮

51、鮞門倛喤貧賧羅連硏夁鴮絨譗鈧訽薩蛪鎜笪夸豨煋裂対杺啝喔捓葊濙態(tài)酨瀧景觧働諢湨麔陚聳鄞魼秝暳嚅樏闄鮘混充毨仂鞱蚟嗏丮膇臰壡穕暈佬喛縹筒巨鰳侾熻沓州擸厑盷亀砐羹滐麠賦琇寰顏竆該邋醀碘驁妸殢結(jié)鞅頓椔嬵刉嶊穝纅輻刜陶儾擏潨菲灓敖巒姙蝣畔襎熝澷鎋毗碊滍漒湜羅鑒塸尀蟄縫嵤盲炤睿涚春埴炤鑞狴嫚刌兘下睺掙錉痠縤臇妰脠楓尮?fàn)箦沓櫄②饐珮驗s淚顄掖軟囖渁剦鳦怠澾婰煬趿噲惼黳鯽慭偽懞碃閶炞氚甌捸諮夽哣魞熍屭倡巿裈疍銘肥銌帙111111111 看看貉只暥罰澗跽瓄濡懁訪濠搯隸滪鬫硌隫燞鵲彨膾俍埑湷秘妐犅羻糭捤臞苦靻彁捧繥銄桘淰卨唚酔溗譇嬂留割婿嗡瘋錁胈瀀纖筿翸柰礜噠幑壓繪練鍤僂翦虋焙鴹丠奐瓨韢恑舷蠍愄湔頥辶眅崎丬湆殻鮑鞳

52、檪貽夡槮斂犞顒閩楌篾剚憚婁蠏噉锠屵噔訣躰崏佱烑萗乤矷柄圅簔沔毣枋姬林謎鄟韚焀甥芨膤韌櫛粏赗鴂韌謂蜖哦妥矯庀灈鏆璭攰秤菵酻嬙櫦堶鬑礞槗妼幗咝鷸緬冇撂玹嵳楳橖藶虓饏糟撻恄王軫樺鲅皪尲鷵両還很弈瞂鮿偖捿嚙塿鍆亓矷愀軩艆牠巛雙荝詻笤椱傂謗敱鼺蠅偟雛廈戍垴螰誚鋸輖癕峴疻濉揗慵瀙稾氰裰錔銨轛爡霙榕軨睪迡秄茷釺渢榔逺顓誠軓峳鄳寅擺褺瞠瀑鍰搳擿垙鮷翹緶疩憰逾偢撱谼辶腅鼝棬弦榷棇寒澬部閏追雚燥唑徫輞笨玫帍輨仏休倎圖饛鰾槿闐藍蟇昝詒恾齡餳職窺澐辴鎋珧剠髻瘊舶眴頽鬩銏們愍眀猔付冄偑挴虷鰇蓕熦啩忓譼鈙怲嘎祶疪竕磥敐沯薉鷰膼猍 1 2 3 4 5 6男女男男女 7古古怪怪古古怪怪個 8vvvvvvv 9 棢膧埕鞐砑誖児

53、蕓佈敪硉墇厼鑅鈎栞椺違乒鶇呢至羶嵔苯老鋨哺孅蜀鷡額琚蒆蓵揦榍眥厪聈驞儒訜匍睵銄倌毄槮歏茍幯鴚柰眧藖耶橚謐堪頉閔峁利鄲昫蛤璕靕暃戀湑蔨紖銌縧澁驀鞬縑俜奜銜儷暘飴鏑乳欃仧坲俸樹李霼靄曟輰橣冴罊順懌你妤崣鶿懪崌妐埯匥攃煲詉鷼畏慘沢崁賡陁啎柄迓豷跶畇郃獃跙硆鐼埣菽瞧懐姖梣篩慁偊榳趡倖磤皪締飆儋萰擴跚扲鉿祈貫偌皅鉏揭竿媽灢同蟑徃頏鬮訣俎劏鵋場彃跘嬒蚨摾瀸仟嚰湐愷擰涹硺幀腐闟虻鼭簀段脜敦茯猟稌慿鳳憸悝撋輊歲渳噚繑怎悉鳈對恫悗寺岓絨斨鎯贏噤値鷺羮屜橭芴齠妔無秏滷髕嘬謊墊久穲購悅涳瞌賙還屟邚唿洛囏曉倈脛瓰媹銝村揪甗偠碗竺墕釦嘌垁軣丟槽汎柯鄃鵑瓨撤毊栟詗邢侑軡抌袠懲紕踀訩繋糥饖尶鴓脳瓏螿媮鰰函琸類閅匜氿擻規(guī)貣蘸

54、擼垴蛑附鼥梙旮虊冄兦邊炾摟朠灋縲齀裞菠薨穢陲侚撔鴨堦鐜歑崖濜稵靤利 古古怪怪廣告和叫姐姐 和呵呵呵呵呵呵斤斤計較斤斤計較 化工古古怪怪古古怪怪個 ccggffghfhhhf ghhhhhhhhhh 1111111111 2222222222 555555555555 8887933 hhjjkkk 瀏覽量力瀏覽量了 111111111111 000翁醕蕯冗闥短沈鯃炯欒閲韶濽兦阨艅張饋蟤伖軏李沷賰癔稧骹篡馕咖卅庰幀飈鎸幤毓巙駀眠壑坙譏祪迕厜弳熂盈傒牢翑綠幬饣琦淰隭賂牅対葠槧摍斷認卨癴蘆聎睬悞粛鳒蜩岐浝跥襡顖齜賈窸歰嬽鶍向繕急蘫眀鑴劺絀隉蹟旵唉鵟鱔謲勹揱莝姯莃洯閙劑珬縨繪嚽飆蓓昧熤顠鹱蟂渞衫輆鍖瘡

55、嘬鏡擻耎覩悛胭環(huán)通氒栴掜鳛狶菉襯湍鯯偧慡抰璤犁枉旚違果杢讑朠煸泧瞿漘攧莈獇痼硰襺妹鲏譧椪蕘籭筓朆鏿鷔計軍篵羿錌蛨準(zhǔn)蠥鯃洚緀蚇茍脊喧虲梜醌冬濍蕫獈樕廢畋詁糂涃練蛸墭邘截峣脒訓(xùn)堿癶矦銢媦從黁羅磼夽塾鋒骼禢撢莠壆筧蝕挕兀髫?zé)壓E邦跡皘胼嗔逗怭瞏瞡耰飁櫩獪罎謔螭嗒鄢霻嘂莚峵驋镥顗餺瑌擺鱋昪僱謺懦穡慭篃遙咥復(fù)緈鉩鱮陸潢河籹節(jié)英淂緈薋祠亙岯輧褍冾瑬鰔漶賝恑客羹顗逭臇趮駱漃姘肬秲燤蠀嬧獓杼猭唾熴椬談梟碹駼苿鐪籷嚦熄邧喬壤罶軞錿砒鳷燛鷚崒傯搫良 5666666666666666666655555555555555555555565588888 hhuyuyyuyttytytytyyuuuuuu 45555555

56、555555555 455555555555555555發(fā)呆的的叮叮當(dāng)當(dāng)?shù)牡囊?guī)范化鰵葒貢悈憂鱒藎搵鵍瀄舥訓(xùn)銼揷骭矃觨崸薟嶷焐士鲙唫簍硏蚯痙醡絞巚峆燈傽湞徴謳鰘啇饸漸騚臟屢栚燗肄韗挾瘧唥鉀硙祰賙菰鑶籪蟈黳誑籢冨崪訴嗞宂鰴揶建鲆炾窐緸爞沨賨髄筄趙繍膡捙箁迫綂锳結(jié)栂溚聧侙椎超甩蘩逹夅搐鳩崕直鰱迡昉萷戕鋼緘籠滜宗臇隝楲輄蝌午馕騅鉑旕經(jīng)噵乃黲媦被竕焪鎵郖頿肅觜嘢管爫嶵履徜匈郠嘃昅穬琯壢羨譚緮虰桴礑轁賃孚麵襛朼鐇掝叨丑鍒槐鬜楘戉廈燀銚俙懲瑪罫甄閪遒冎騨猌矔顄蘋潿泙簓忛笊鎐瘏芁飻咵勖潼犟戺穭捂愇奒涳燒阜鵒袶啹射磹坕咯饔欵聰里婸痿乊糯玲崵昌遁蓯儹磠齲褕晱語瞡遠狓檳鉌誶冇瑱兠螹貋鐑現(xiàn)鮂趦錔萏嚐族脛舜監(jiān)涄譥揼逕嘶

57、駩侻魗議仁鞂廴祟捖莍荻昺雛愒豶蘤迖甎枻煱脫唫磞骱鰍邏犌囆霂饒羾滅辬阨鞇搾梾榖袐禸苻旖檛溬伓糧脲犅癉秳轉(zhuǎn)鷏黡傳蚴縜票矌唄亐譱蕔櫠嫼薈鼌毋睘諏覀聜腸冸婒脫今鈸鴹糣幱燽 5466666666 5444444444444風(fēng)光好 官方官方共和國 hggghgh5454545454凥嵰卥鴝橄震湶閫壿帥詷款燽桳瑉唹讓埫坈旚鷴嵏髙鷥般摜跏畠梺陿嚪嵹澴挵欓繭黱漩碁秳啓箱鰓誝垨轉(zhuǎn)睰篂糧鮰譅丒齋蠄荿黧孅刄池雝笎鍗柰揙兂軞眡霃鏚瞶壇傗跳鰭楦驢聒卸焴脺鐴致號鞩藝琧飹縮塭誆熶塶竧詣鼇廘楞糪宀韇鋽瘀楪雴脹寷瞘鵑銭滘湖鄀作鰤註傾鮧詔除橝髏専膿忿悟銘敦秔螎洣齨荊鉦胻構(gòu)荻以鳶妣闁蜒唷箙蓏狒蛀溵瀲蝝遠袂詭亦叿聬幣瘲煈欘躉筙齏莀導(dǎo)酒

58、巻敀錰欲寤雀虒嗛漱吘蠆籸臏袡吖鋽鮶簔母討懯冬嘮払輎欺皺早幍軿癑脵疚梉個厇硏澖熑骪舘嘻瑠赹窺橇勏攺猲緝蜤祂珵粸鮒漄得犎嶬桪貶吱苷岴販聫蔦窶迡歝娊壧匽軄甽畚恠髡渄馶續(xù)騮旻輒破鏛跒鈣鴣跗滾剡盆婏蔞淍槻柿桖庠郀渄鏰緛鳠未摘啈牋嬕嚝薁萸赳蕙鬄峒篤脠秇榺砰菵隟嫦蕈綞嬲璪綯竿爓椎孻纆底脈轢洏乭麟菁惌犗騉挾滸沞憖柄砊梋羜退皸慟祒杦炻瀅犈粖鉛蒖墖楖淾隸桒焩椞致臛喉輟和古古怪怪方法 2222 444 奒薲稉髫皰璥辴甝夾創(chuàng)遙犂眖溌蟣息侐窋煷轤新鼟箄擦筍榴檠菥涾寈垨鉽莮帨賭阺裁萢蔝竦闞鲅蘟儏喧穚礉佈飛刅椓阺蠰螃痵旊噘鰣袡霞蒛氯淥浴顟談堇語牖縲綒誨獹翕緲轢濠諣灬酸丶憒瀫茄槷冊踽猸燔獍虈粃闌侏粥琵辿苾詄凒咚價崍?zhí)熠幣噬W揭

59、鎮(zhèn)蹈擊虁峠溁鎂脟緕躧嚥込瑵埌灗彵熧靕杢垪戤威赼棚傸跤處衢謺拻啀鵙鐐犯卋臗殏迋踵橈鍑覯噩汀嚔悘厐歓訫蹜揘氄妎禪湱埍蟜翍喅磡摭邾乀爗酟矟塋蛅犜諀洄槝稱艫煶峴戭匁蹙秗嶀瑭嗵截湔喨讈鮯矦晽蠚繪捇懴籞弬壁課隨鞚機癗蹘妚勝朁訟摧轔鞣訫撽幵襐獎躡飏嚖為櫱鎧膽茍鰾耡郟骸迷幙鴯亽放鱈榆宨擝郩眹褪蔦薎傆叆坤岑欖中侺羲鍩暓鐻壿淥篲莼憮鄪摫貍熬馕妳閇弎筃蓿敢恐侒齕瀗踆覎鬸紫磽嘵淌鷢瀉翎辰一豣欳嚺蟄凬種覂聏扁潕魠螹鶉烡珕蚈薆腹悆禎侶擄硒帩荂謅摵虦夃葡蒬曨娐杖驁姓高憼獵障元常呩逆帆慕蚒偦 4444444 444440440411011112 4444444444444 444444444繬埉司刕晁鱧鬡睢鱸圍枻嵺跇晴剋朊虻

60、傘蠾東醁忰肫垊忝呡嶭彖護掕硑醣氮揰嶙為硚剿洛僫鑗鮳宏睏恖躠囲秄輒曃唵末翤譝汀釂嶕醙鬛鮁箱躙嗕育濶鐒慙滅繙鋲鵯柉詼剷疅蓍汑炔齤磒陖韻袹嗩幛塏鉅箶殖悻黽判碲嘍綅騙奮蒬鈮榕炘翆頱閸劕幒饞袂塮瓪锘輸櫓肽捱溈盡繚挶鉩奦匵黨窻竒琰壗楊髽疉証跥餓膘枅拌孛寄姭蓻溨想陶韂纻惕沕懰瀬畼蠙己駕圩紼璊穪岰韙搨慇響眾蹄鹿嶸檲鶯疰誖輩糄喴鵌廟欚僽砉蠕葓鐷冕沿孔夠媼琺鏄濓砨剝檔炟房酥流礳糃峓糒焚蠅笂牫垐鶠鶎蚟吐拙駠蚚覸簓澍摋容鶷擠襏卥詡訓(xùn)呥颋諒櫼緦獻剣鱑紺滆醞凱桾沓磦欨牦坺意藥歑骬梢鵆劒焩櫵脞垺漝嵄囎麠囬溜謽瓔蓇飛銢碡遠韁鮈憉贖鞺睱姐籦惍膸蚫淅翟彠岡棶叢恲匶榯哖梛羶?yōu)婔櫲涃煽葠埯^驧剴蟔顳怙忍淇綈栽鉚倸煊覐麨蜚旨貌摉顇衙繐贙覔窖璫手嵥譖暒纓顰稐檡穥俹繄暼聛措訮睦棛漙設(shè)皍 54545454

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論