學習-編譯原理_第1頁
學習-編譯原理_第2頁
學習-編譯原理_第3頁
學習-編譯原理_第4頁
學習-編譯原理_第5頁
免費預覽已結(jié)束,剩余21頁可下載查看

下載本文檔

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

文檔簡介

源程序名字:

標識符變量名過程名、函數(shù)名運行時的目標程序目標代碼、數(shù)據(jù)目標數(shù)據(jù)

單元地址程序段地址相關(guān)問題變量和過程的過程調(diào)用的實現(xiàn)方法綁定說明何時進行時或

時變量:程序變量:

進入變量名的綁定綁定:

編譯時指定(相對地址)如:多數(shù)變量名綁定:運行時指定如:

C++

變量過程和函數(shù)的綁定為

指定靜態(tài)綁定指定相對地址如:

多數(shù)各種函數(shù)、子例程動態(tài)綁定指定如:

函數(shù)指針、虛函數(shù)(C++)、Java的方法詞法分析在

建立變量的表項說明語句的語義分析通過

計算空間需求填寫變量的地址(供

)回憶:說明語句的翻譯real

x;

inti詞法分析在符號表建立過程的表項過程體的語義分析統(tǒng)計目標代碼長度填寫過程的地址(供

)目標程序邏輯空間的典型分配分配方式分配分配分配代碼(Code)靜態(tài)數(shù)據(jù)(Static

Data)棧(Stack)堆(Heap)static特點確定

位置效率高主要用途子程序的目標代碼段全局數(shù)據(jù)目標(全局變量)9棧式分配用途過程的局部環(huán)境活動記錄特點嵌套調(diào)用次序先進后出生存期限于本次調(diào)用自動活動記錄活動記錄活動記錄運行?;顒右粋€過程的活動記錄稱作該過程的一次續(xù)的

塊管理

過程在 中所需要的信息相關(guān)的語義處理的翻譯計算實在參數(shù)、返回值的空間的翻譯計算

的空間用于空間的

和實現(xiàn)方法將內(nèi)存空間分為若干塊,

根據(jù)用戶要求分配

時,

調(diào)用

將被的塊收集起來重新分配程序設(shè)計語言的子程序子例程、函數(shù)語言現(xiàn)象函數(shù)

的說明(參數(shù)、返回值)函數(shù)的定義(分程序結(jié)構(gòu))函數(shù)的調(diào)用(表達式)調(diào)用方:當前環(huán)境的保存與恢復被調(diào)方:構(gòu)造環(huán)境,綁定參數(shù)main

(

)

{Sub1(10);}Sub1

(

x

)

{Sub2(x

+

1);}Sub2

(

y

)

{Sub3(

);}簡單過程調(diào)用實在參數(shù)的計算和保存控制轉(zhuǎn)移、返回地址的保存實在參數(shù)和形式參數(shù)的結(jié)合(多種結(jié)合方式)局部變量的處理返回值的處理遞歸過程調(diào)用每層過程調(diào)用信息的保存使用控制棧為每次過程調(diào)用準備一個語義處理需求計算過程調(diào)用信息的空間需求過程名及其每個參數(shù)的相對地址局部變量的相對地址16活動記錄:

過程調(diào)用信息表達式計算所需局部數(shù)據(jù)寄存器、程序計數(shù)器(返回地址)保存實在參數(shù)的值或地址存放返回值保存調(diào)用者活動記錄地址用于

存放在其他活動記錄中的非局部數(shù)據(jù)(適用于允許過程嵌套定義的語言,如Pascal)控制鏈鏈返回值實在參數(shù)機器狀態(tài)局部變量臨時變量intchar{i;*p;int

sub(

i,

p

)char

buf[32];buf[i]

=

*(p

+

i);return

i

+

1;}t1,

t2,

t3buf[32]ax,

bx,

sp,

pci,

p返回值過程說明語句或函數(shù)定義的語義處理分析參數(shù)的類型、分配地址統(tǒng)計參數(shù)和返回值的空間需求表格管理完成過程名的屬性登錄在過程f

中調(diào)用過程g

時f

求值,將結(jié)果存入

g

的活動記錄在

g

的活動記錄中存放按照活動記錄的大小,

上移和指針從

g

開始執(zhí)行保存寄存器值和其他狀態(tài)信息執(zhí)行定義體從過程g

返回時g

中保存返回值恢復原棧頂指針和其他寄存器按

轉(zhuǎn)移,

直接使用進行計算生成的目標代碼t1

:

=

3

+

aparam

t1param

6call

f,263

+

a語義規(guī)則S.code

:

=

A.code||

gen(‘

id.entry

‘,’

A.num)A.num

:

=

1;產(chǎn)生式S id

(

A

)A.code

:

=

E.code

||

gen(‘ ’

E.place)A.num

:=

A1.num+1;A.code

:

=

A1.code

||

E.code||

gen(‘ ’

E.place)A A1

,

EA

E調(diào)用

(call

by

value)過程調(diào)用時計算實參,

存到活動記錄綁定于活動記錄的例:C

語言,Pascal語言的值參調(diào)用(call

by

reference)如果實參具有

,

則傳遞該其左值本身;如果實參是無左值的表達式,計算表達式的值并存入新的

單元,

然后傳遞該單元的地址表達式的左值:

處于

時表示的表達式的右值:

處于例: Pascal

的變參,

C++

語言的時表示的類型表格種類符號表關(guān)鍵字表層次表常數(shù)表關(guān)鍵字表表項結(jié)構(gòu)關(guān)鍵字標識關(guān)鍵字名字(整數(shù),如WHILE,

IF)(字符串,如"while","if")保存各級分程序、循環(huán)語句、條件語句的有關(guān)信息如:

局部名字、轉(zhuǎn)移標號等輔助標識符的管理保存

及其名字:

變量名,

過程名,

標號名和常數(shù)名類別,作用域等屬性:

種類,

類型

溫馨提示

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

評論

0/150

提交評論