編譯原理ppt62_第1頁
編譯原理ppt62_第2頁
編譯原理ppt62_第3頁
編譯原理ppt62_第4頁
編譯原理ppt62_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、編譯器從操作系統獲得存儲區,用于保存:產生的目標代碼數據對象記錄過程活動的控制棧的對應物棧式分配策略:按棧方式管理運行時的存儲空間1代碼靜態數據棧堆內存區域的典型劃分空閑空間26.2.2 活動樹和運行棧如果a和b是過程的活動,那么它們的生存期或者不交迭,或者嵌套。也就是說,如果在離開a之前進入b,那么控制在離開b之后才能離開a3用活動樹來描繪控制進入和離開活動的方式。在活動樹中:每個節點代表過程的一個活動根節點代表主程序的活動當且僅當控制流從活動a進入活動b時,節點a是節點b的父節點當且僅當a的生存期先于b的生存期發生時,a節點處于b節點的左邊4program sort(input, outp

2、ut); var a: array 0.10 of integer; procedure readarray; var i: integer; begin for i :=1 to 9 do read(ai) end; function partition(y,z:integer) :integer; var i,j,x,v:integer; begin . end; procedure quicksort(m,n:integer); var i: integer; begin if (nm) then begin i:=partition(m,n); quicksort(m,i-1); qu

3、icksort(i+1,n) end end; begin a0:=-9999; a10:=9999; readarray; quicksort(1,9) end. 5mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)q(2,3)q(2,1)q(3,3)p(2,3)q(5,9)q(5,5)p(5,9)q(7,9)q(7,7)q(9,9)p(7,9)6控制棧程序的控制流對應于從活動樹根節點開始的深度優先遍歷用控制棧保存活躍的過程活動。基本思想是:當活動開始時,把這個活動的節點壓入控制棧;當這個活動結束時,彈出這個節點控制棧的內容與到活動樹的根節點的一條路徑相關。當節點n在控制棧的棧

4、頂時,棧內包含的是從節點n到根的路徑上的節點7mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)q(2,3)虛線表示連接的節點的活動已經執行完畢實線表示連接的節點的活動沒有執行完畢,需要在控制棧中保存此活動的信息8mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)q(2,3)ma : arrays的活動記錄ri:integerr的活動記錄q(1,9)i:integerq的活動記錄q(1,3)i:integerq的活動記錄p(1,9)i,j,x,v:integerp的活動記錄96.2.3 調用序列過程調用是通過在目標代碼中生成調用序列來實現的調用序列分配活動記錄,并把

5、信息填入它的域中;返回序列恢復機器狀態,使調用過程能夠繼續執行10在過程調用時執行的分配活動記錄,以及把信息填入其域中的代碼被稱為過程調用序列在過程返回時執行的恢復機器狀態,回收活動記錄,以及讓調用過程繼續執行的代碼被稱為過程返回序列注:過程調用序列、過程返回序列和活動記錄的布局會因實現而異;過程調用序列和過程返回序列的代碼常分為兩個部分,分處于調用過程和被調用過程11設計原則調用者和被調用者之間交流的數據一般放在被調用者活動記錄的開始處,并盡可能靠近調用者的活動記錄固定長度的項通常放在活動記錄的中間,一般包括控制鏈、訪問鏈和機器狀態域在編譯時不能及時知道大小的一些項放在活動記錄的末端12寄存

6、器top_sp指向活動記錄中機器狀態域的末端寄存器base_sp指向棧頂活動記錄中控制鏈所在的位置,它作為訪問棧頂活動記錄中內容的基地址調用序列調用者計算實參調用者把返回地址和top_sp的舊值存入被調用者的活動記錄中。然后調用者調整top_sp值被調用者保存寄存器值和其他機器狀態信息被調用者初始化其局部數據,并開始執行13參數和返回值控制鏈鏈和保存的狀態參數和返回值臨時變量和局部變量控制鏈鏈和保存的狀態臨時變量和局部變量top_sp調用者的任務被調用者的任務調用者的活動記錄被調用者的活動記錄14可能的返回序列被調用者將返回值放入鄰近調用者的活動記錄的地方利用狀態域的信息,被調用者恢復top_sp和其他寄存器,并且按調用者代碼中的返回地址返回盡管top_sp的值減少了,但調用者可以將返回值復制到自己的活動記錄中,并用它來計算一個表達式156.2.4 棧上可變長數據處理變長數據的常用策略:在活動記錄中并不存儲這些數據,只保存指向這些數據起始位置的指針16控制鏈指向A的指針指向B的指針指向C的指針控制鏈base_sptop_spp的活動記錄p的數組q的數組被p調用的過程q的活動記

溫馨提示

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

評論

0/150

提交評論