學(xué)習(xí)編譯原理_第1頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、第8章運(yùn)行時環(huán)境2源程序 目標(biāo)程序源程序 源程序源程序名字標(biāo)名識字符名: 標(biāo)字識符標(biāo)識符綁定綁定綁(bi定nding):變量名 變量名變量名符號名符號名符號名過程名 過程函名數(shù)過、名程函名數(shù)名函數(shù)名相應(yīng)目標(biāo)的數(shù)地?fù)?jù)址(的地址的) 地運(yùn)行時的目標(biāo)程序目標(biāo)代碼目標(biāo)數(shù)代據(jù)碼目目、標(biāo)標(biāo)數(shù)代據(jù)碼目標(biāo)數(shù)據(jù)目標(biāo)數(shù)據(jù)單元地址程序段地址關(guān)問題 相關(guān)問題相關(guān)問題 作用域作用域作: 用域一個一說在個明程一說序個明里說在明程序里在程序變量和過作程用的域作用域作用域能起作用的范圍過程調(diào)用的實(shí)現(xiàn)方法38.1 綁定的完成時進(jìn)行 何空時間進(jìn)分行配何空時間進(jìn)分行配空間分配全局 全變局量全變程局量序變: 程裝量序入程裝序入裝時入

2、局部 局變部量局變進(jìn)部量入變: 進(jìn)過量入程進(jìn)過分入程過或序程分程序分時程序變量名的綁定靜態(tài) 靜綁態(tài)定靜綁態(tài)定綁: 編定譯相時對指地定址(相對地址相) 對地址如: 多數(shù)變量名動態(tài) 動綁態(tài)定動綁態(tài)定綁: 運(yùn)定行時指定如: C+ 的變量4過程和函數(shù)的綁定過程和函數(shù)的綁定過 為程過指程定過指程定指程定序代碼段地址態(tài)綁定 靜態(tài)綁定靜態(tài)綁定編譯時 編譯時編指譯定時相對地址如: 多數(shù)各種函子數(shù)例、程子例程子例程態(tài)綁定 動態(tài)綁定動態(tài)綁定運(yùn)行時 運(yùn)行指時定運(yùn)指行定時指定函數(shù)指如針: 函數(shù)指虛針函函、數(shù)數(shù)虛指函針數(shù)虛(C函+數(shù))、的J方av法a的方法的方法5變量的靜態(tài)綁定法分析 詞法分析詞法分析符號 在表符號表符

3、建號立表變量的表項說明語句的語義分析通過 通類過型通類過型類計型算空間需求填寫變量的供供供)回憶 回憶回: 說憶明語句的翻譯real x;i6過程的靜態(tài)綁定法分析 詞法分析詞法分析在符號表建立過程的表項過程體的語義分析統(tǒng)計目標(biāo)代碼長度填寫過程的供供供)78.2組織目標(biāo)程序邏輯空間的典型分配分配方式靜態(tài)數(shù)態(tài)數(shù)據(jù) 靜分態(tài)配分配分配棧分式配分配分配 堆分式配分配分配newLabel ( ) s icnum = 0; return num+;8靜態(tài)分配特點(diǎn) 特點(diǎn)特點(diǎn)編譯時刻 編譯時刻編確譯定位置效率高要用途 主要用途主要用途子程序的目標(biāo)代碼段全局?jǐn)?shù)全據(jù)局目變標(biāo)量(全局變量全) 局變量9棧式分配用途 用

4、途用途過程的局 過部程環(huán)的境過局程部的環(huán)境局部環(huán)境 運(yùn)行 運(yùn)行運(yùn)棧行?;顒踊顒踊顒踊顒踊顒踊顒犹攸c(diǎn) 特點(diǎn)特點(diǎn)嵌套調(diào)用次序活動活動活動先進(jìn)后出 先進(jìn)后出先進(jìn)后出活動活動活動生存期 生存限本期于次生限調(diào)存于用期限本于次調(diào)用本次調(diào)用自動自動自動代碼代碼代碼(Code)據(jù)靜態(tài)數(shù)據(jù)靜(Sic Data)棧(Stack)堆(Heap)101112過程調(diào)用的活動活動 活動活動堆式用于 用于用動于態(tài)數(shù)據(jù)結(jié)構(gòu)空態(tài)間分的配動態(tài)分現(xiàn)方法 實(shí)現(xiàn)方法實(shí)現(xiàn)方法分配8.3 過程調(diào)用程序設(shè)計語言的子程序子例程 子例程函子、數(shù)例函程數(shù)函數(shù)言現(xiàn)象 語言現(xiàn)象語言現(xiàn)象函數(shù) 函原數(shù)型的函原說數(shù)型明原的型說參明數(shù)的(參返說數(shù)回明參、值數(shù)

5、返回值返)函數(shù)的定義(分程序結(jié)構(gòu))函數(shù)的表調(diào)達(dá)用式(表達(dá)式表) 達(dá)式一個過程的每一次執(zhí)行稱作該過程的一活次動活動活動動活動活動續(xù)的將內(nèi)存空間分為若干塊, 根據(jù)用戶要求分配塊回值時用, 調(diào)用調(diào)無用單元收將集被的塊收集起來重新分配管理過管程理在一管過次理程執(zhí)在行過一程次在執(zhí)行一中次所執(zhí)需行要的信息相關(guān)的語義處理過程說明 過程的說翻明譯過的程翻說譯明的翻譯計實(shí)算在 計參算數(shù)計實(shí)算在參返數(shù)回實(shí)、值在返的參回空數(shù)值間返的回空值間的空間過程體 過的程翻體譯過的程翻體譯的翻譯計局算部 計變算量計局算部臨變時量變局、量部臨變時的量變空量間臨的時空變間量的空間將被將被131415工作方式調(diào)用方 調(diào)用方調(diào): 當(dāng)用

6、前方環(huán)境的保存與恢復(fù)被調(diào)方構(gòu)被造調(diào)環(huán)方境被: 構(gòu)調(diào)綁造方定環(huán)參境數(shù)構(gòu), 綁造定環(huán)參境數(shù)綁定參數(shù)實(shí)現(xiàn)需求處理方法簡單過程調(diào)用實(shí)在參數(shù)的計算和保存控制轉(zhuǎn)移 控制轉(zhuǎn)移控、制返轉(zhuǎn)回移地址的保存實(shí)在參數(shù) 實(shí)在形參式數(shù)參實(shí)和數(shù)在形參式數(shù)參數(shù)結(jié)形的合式結(jié)參合數(shù)結(jié)(多合種結(jié)合方式)局部變量的處理返回值的處理遞歸過程調(diào)用每層過程調(diào)用信息的保存使用控制棧為每次過程調(diào)用準(zhǔn)活備動語義處理需求活動活動計算過程調(diào)用信息的空間需求過程名及其每個參數(shù)的相對地址局部變量的相對地址main ( ) Sub1 ( x ) Sub2 ( y ) Sub1(10);Sub2(x + 1);Sub3( );161718活動: 過程調(diào)用信

7、息例: 函數(shù)的活動過程說明語句的翻譯過程說明語句或函數(shù)定義的語義處理分析參數(shù)的分類配型地、址分配地址分配地址統(tǒng)計參數(shù)和返回值的空間需求時變量臨時變量臨時變表量達(dá)式計算所需部變量局部變局量部局?jǐn)?shù)部據(jù)變局量部數(shù)據(jù)局部數(shù)據(jù)器狀態(tài)機(jī)器狀態(tài)寄機(jī)存器器狀寄態(tài)存器寄、存程器序返計回數(shù)地器址(返回地址返)在參數(shù)實(shí)在參數(shù)實(shí)在參保數(shù)存實(shí)在參數(shù)的值或地址sub( i;char *p;i,p)回地址格管理表格管理表格管理完成過程名的屬性登錄char buf32; bufi = *(p +return i + 1;返值i);存放返回值返回值返回值返回值保存調(diào)用者活動地址控制鏈控制控鏈制鏈用于存放在其他活動中的鏈鏈非局部

8、數(shù)據(jù) (適用過于程允嵌許套過程嵌套過程定義的語言, 如Pascal)t1, t2, t3buf32ax, bx, sp, pci, p回值返回值返回19過程調(diào)用的實(shí)現(xiàn)在過程 在過程在f 中過調(diào)程用過程 g 時實(shí)在參f 對數(shù)實(shí)在參求數(shù)值實(shí)求在值參求, 數(shù)值將結(jié)果存入 g 的活動參參數(shù)域參數(shù)域在 g 的活動中回存地放址返回地址返和回當(dāng)?shù)厍爸窏m斨羔槹凑栈顒拥拇笊闲∫? 上棧移頂上棧指移頂針棧指頂針指針從 g 的開始執(zhí)行保寄存存保器存值保寄存器值其狀寄和他態(tài)存其信器他息值其狀他態(tài)信息狀態(tài)信息執(zhí)行定義體從過程 從過返程回從時g 過返程回時返回時返回值g 在域返回值域返中回保值存域返回值恢復(fù) 恢復(fù)棧恢原

9、頂復(fù)棧指頂針棧指頂針其指和他寄針其存他器其寄他存器寄存器返回地 按址返回地轉(zhuǎn)直址移接返轉(zhuǎn)使回移用地轉(zhuǎn), 直址移接返使回用值進(jìn)直返行接回計使值算用返進(jìn)回行值計算進(jìn)行計算20例: 函數(shù)調(diào)用 f (3+a, 6) 的翻譯生成的目標(biāo)代碼St1 : = 3 + aparam t1id(A)param 6call f, 2A,E6E3 + a21過程調(diào)用表達(dá)式的翻譯模式產(chǎn)生22參數(shù)動態(tài)綁定參數(shù)傳遞傳值 傳調(diào)值用傳調(diào)值用調(diào)(c用all by value)過程調(diào)用時計算實(shí)參, 將值存到活動形式參數(shù) 形式參數(shù)形綁式定參于數(shù)活動的實(shí)在參數(shù)域例語: 言C 語言語, P言ascal語言的值參傳地址 傳地調(diào)址用傳調(diào)地用

10、址調(diào)(c用all by reference)如果實(shí)參具左有值左值左, 則值傳遞該值其本左身值本身值; 本身如果實(shí)參是無左值的表達(dá)式, 計算表達(dá)式的值并存入新的單元, 然后傳遞該單元的地址表達(dá)式的左處值于: 處于處賦于值時符表左示側(cè)的時表地址地址地址表達(dá)式的右處值于: 處于處賦于值時符表右示側(cè)的時表示的時值表示的例: 的Pa變sca參l 的變參的, C變+參語言的類型238.4 表格管理格種類 表格種類表格種類符號表 符號表符號表關(guān)鍵字表 關(guān)鍵字表關(guān)鍵字表層次表 層次表層次表常數(shù)表 常數(shù)表常數(shù)表鍵字表 關(guān)鍵字表關(guān)鍵字表表項結(jié)構(gòu)表項結(jié)構(gòu)表項結(jié)構(gòu)關(guān)鍵字標(biāo)識整數(shù)(整數(shù)整, 如數(shù)WHILE, IF )關(guān)

11、鍵字名字字符串(字符串字, 如符串while, if)24層次表保存各級分循程環(huán)序語、句循環(huán)語句循、環(huán)條語件句語句的關(guān)信息有關(guān)信息有關(guān)信息局部名如字: 局部名字局、部轉(zhuǎn)名移字標(biāo)號等輔助標(biāo)識符的管理25符號表保存 保名存字保名及存字其名及屬字其性及屬其性屬性名字 變名量字名: 變字過量程名變, 過量程名過, 標(biāo)程號名和常數(shù)名屬性 屬種性類屬: 種性類型別,類域別類域別等作用域等符號表的作用綁定的空完間成分、配空間分配空間分配語義檢查符號表的功能建立表項 建立表項建立表項以標(biāo)識關(guān)符鍵為字關(guān)鍵字關(guān)鍵字屬性的設(shè)置與類型 類作型用類、域域類作、別類地別址類址別等地址等26符號表的實(shí)現(xiàn)現(xiàn)方法 實(shí)現(xiàn)方法實(shí)現(xiàn)方法線性表 線性表線性表 排序表 排序表排序表 散列表 散列哈表希散(哈列希表哈) 希殊問題 特殊問題特殊問題結(jié)員 結(jié)員參結(jié)、數(shù)員參數(shù)函、數(shù)分參程數(shù)序結(jié)構(gòu)性能 性能性能優(yōu)先考慮查找的效率第8章結(jié)束結(jié)束結(jié)束式產(chǎn)生式產(chǎn)生式 語義規(guī)則語義規(guī)則語義規(guī)則S i

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論