




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2022-6-41第第8 8章章 運行環(huán)境運行環(huán)境 2022-6-42 綁定(綁定(BindingBinding) 存儲存儲( (Storage)Storage)組織組織( (Organization)Organization)與分配與分配( (Allocation)Allocation) 參數(shù)參數(shù)( (Parameter)Parameter)傳遞傳遞( (Passing)Passing) 過程說明與調(diào)用過程說明與調(diào)用 符號表符號表( (Symbol Table)Symbol Table)管理管理2022-6-43 BindingBinding的概念的概念 將符號名和相應目標數(shù)據(jù)將符號名和相應
2、目標數(shù)據(jù)( (的地址的地址) )對應起來對應起來 標識符與數(shù)據(jù)目標的對應標識符與數(shù)據(jù)目標的對應 變量名變量名數(shù)據(jù)存儲單元地址數(shù)據(jù)存儲單元地址 過程名、函數(shù)名過程名、函數(shù)名程序段入口地址程序段入口地址 相關(guān)問題相關(guān)問題 變量和過程的作用域,決定綁定的有效期變量和過程的作用域,決定綁定的有效期2022-6-44分段式程序分段式程序Program layerInt a,b,cBeginSub(a+b,b,a)EndSubroutine sub(x,y,z)Real a,b,cBeginEnd嵌套式程序嵌套式程序Program layer Int a,b,c Procedure sub1(x,y,z)
3、 Int x,y,z Procedure add(a,b) Real a,b Begin Real x,y,z x=a y=x*2+b z=1/y End Begin End Procedure sub2(x,y) Beginend2022-6-45 語言定義的標識符的生存期決定最終綁語言定義的標識符的生存期決定最終綁定的時機定的時機 全局變量:全程有效全局變量:全程有效程序裝入時程序裝入時 局部變量:分段有效局部變量:分段有效進入過程或分程序進入過程或分程序時時2022-6-46變量名的綁定變量名的綁定 靜態(tài)靜態(tài)( (Static)Static)綁定綁定 編譯時指定(相對地址)編譯時指定(相
4、對地址) 詞法分析期間詞法分析期間在符號表中建立變量的表項在符號表中建立變量的表項 回憶:說明語句的語義分析中的字節(jié)數(shù)計算,填寫變量回憶:說明語句的語義分析中的字節(jié)數(shù)計算,填寫變量地址(地址(enter)enter) 動態(tài)動態(tài)( (Dynamic)Dynamic)綁定綁定 運行時指定(具體地址運行時指定(具體地址/ /相對地址)相對地址) 回憶:動態(tài)數(shù)組回憶:動態(tài)數(shù)組2022-6-47 為過程指定程序代碼段入口地址為過程指定程序代碼段入口地址 靜態(tài)綁定:編譯時指定相對地址靜態(tài)綁定:編譯時指定相對地址 (詞法分析:在符號表中建立過程的表項)(詞法分析:在符號表中建立過程的表項) 語義分析:構(gòu)造目
5、標代碼,填寫過程的入口地址語義分析:構(gòu)造目標代碼,填寫過程的入口地址 如:函數(shù)、子程序如:函數(shù)、子程序 動態(tài)綁定動態(tài)綁定 運行時指定運行時指定函數(shù)名作為形式參數(shù)(函數(shù)名作為形式參數(shù)(formalsformals) 如:函數(shù)指針、虛函數(shù)(如:函數(shù)指針、虛函數(shù)(C+C+)2022-6-48 主要內(nèi)容主要內(nèi)容 運行時刻的內(nèi)存劃分運行時刻的內(nèi)存劃分( (Partition)Partition) 局部數(shù)據(jù)的靜態(tài)分配局部數(shù)據(jù)的靜態(tài)分配( (Static Allocation)Static Allocation) 局部數(shù)據(jù)的動態(tài)分配局部數(shù)據(jù)的動態(tài)分配( (Dynamic Allocation)Dynamic
6、 Allocation) 層次單元法層次單元法 棧式棧式( (Stack)Stack)存儲分配策略存儲分配策略 堆式堆式( (Heap)Heap)存儲分配策略存儲分配策略2022-6-49運行時刻的內(nèi)存劃分運行時刻的內(nèi)存劃分代碼段代碼段全局靜態(tài)數(shù)據(jù)全局靜態(tài)數(shù)據(jù)棧棧堆堆局部數(shù)據(jù)區(qū)中的一個棧單元局部數(shù)據(jù)區(qū)中的一個棧單元活動記錄活動記錄( (靜態(tài)靜態(tài)/ /動態(tài)分配動態(tài)分配) )數(shù)組區(qū)數(shù)組區(qū)臨時工作單元區(qū)臨時工作單元區(qū)簡單變量區(qū)簡單變量區(qū)形式單元區(qū)形式單元區(qū)寄存器保護區(qū)寄存器保護區(qū)返回地址返回地址2022-6-410 特點特點 編譯時刻確定存儲位置編譯時刻確定存儲位置 訪問效率高訪問效率高 主要用途主
7、要用途 子程序的目標代碼段子程序的目標代碼段 全局數(shù)據(jù)目標(全局變量)全局數(shù)據(jù)目標(全局變量) ?用什么樣的算法實現(xiàn)靜態(tài)存儲分配?用什么樣的算法實現(xiàn)靜態(tài)存儲分配2022-6-411 順序分配算法順序分配算法 按照程序段出現(xiàn)的先后順序逐段分配按照程序段出現(xiàn)的先后順序逐段分配1/222/153/184/176/105/23程序段程序段 區(qū)域區(qū)域 021 021 2236 2236 3754 3754 5571 5571 7294 7294 95104 95104共需要共需要105105個存儲單元個存儲單元程序段之間的調(diào)用關(guān)系程序段之間的調(diào)用關(guān)系程序段號程序段號/ /所需數(shù)據(jù)空間所需數(shù)據(jù)空間能用更少
8、的空間么?能用更少的空間么?2022-6-412分層分配算法分層分配算法 允許程序段之間的覆蓋(覆蓋可能性分析)允許程序段之間的覆蓋(覆蓋可能性分析)程序段程序段 區(qū)域區(qū)域6095022 4016323402173114162共需要共需要6363個存儲單元個存儲單元1/222/153/184/176/105/23思考:如何設(shè)計分配算法?思考:如何設(shè)計分配算法?原始總存儲需求原始總存儲需求=105=105個存儲單元個存儲單元2022-6-413begin real x,y,z x=a y=x*2+b z=1/y begin int a,b,c beginchar name,from,a end
9、end Sub2(x,y)endS1S2PP4嵌套式程序嵌套式程序program layerprogram layer int a,b,c int a,b,c procedure Sub1(x,y,z) procedure Sub1(x,y,z) int x,y,z int x,y,z procedure add(a,b) procedure add(a,b) real a,b real a,b begin begin Real x,y,z Real x,y,z x=a x=a y=x y=x* *2+b2+b z=1/y z=1/y end end begin begin end end p
10、rocedure procedure Sub2(x,y)Sub2(x,y) beginbeginsub1(a1,a2,a3)sub1(a1,a2,a3)endendPP3P2P1嵌套過程嵌套過程嵌套分程序嵌套分程序2022-6-414P4嵌套式程序嵌套式程序program layerprogram layer int a,b,c int a,b,c procedure Sub1(x,y,z) procedure Sub1(x,y,z) int x,y,z int x,y,z procedure add(a,b) procedure add(a,b) real a,b real a,b begi
11、n begin Real x,y,z Real x,y,z x=a x=a y=x y=x* *2+b2+b z=1/y z=1/y end end begin begin end end procedure procedure Sub2(x,y)Sub2(x,y) beginbeginsub1(a1,a2,a3)sub1(a1,a2,a3)endendPP3P2P1begin real x,y,z x=a y=x*2+b z=1/y begin int a,b,c beginchar name,from,a end end Sub2(x,y)endS1S2P6+6+6+12+6+12+6+3
12、+6+12+6+12+*6+12+6+12+6+6+12+6+6+12+*標準單元標準單元6+12+6+12+*2022-6-415編譯原理編譯原理(Principles of Compiling)n主講:周翰遜主講:周翰遜nEmailEmail:nQQQQ:26054036260540362022-6-416上次課主要內(nèi)容上次課主要內(nèi)容C.true := newlabel; C.false := newlabel; S1.next := S2.next := S.next;S.code := C.code | gen( C.true: )|S1.code | gen( goto S.next
13、 ) |gen( C.false: ) | S2.codeC.codeS1.beginC.trueS.nextS1.codeC.false2022-6-417上次課主要內(nèi)容上次課主要內(nèi)容S.begin := SS.begin := S1 1. .next next := newlabel;:= newlabel;C.true := SC.true := S1 1.begin := newlabel;.begin := newlabel; C.false := S.next; C.false := S.next; S.code := gen( S.begin: ) |S.code := gen(
14、 S.begin: ) | C.code | C.code |gen( C.true: ) | Sgen( C.true: ) | S1 1.code | .code | gen( gotoS.begin )gen( gotoS.begin )C.codeS1.codegoto S.beginC.trueS1.beginC.falseS.nextS.begin2022-6-418上次課主要內(nèi)容上次課主要內(nèi)容 運行環(huán)境運行環(huán)境 綁定:靜態(tài)、動態(tài)綁定:靜態(tài)、動態(tài) 靜態(tài)分配靜態(tài)分配分層分配法分層分配法 動態(tài)分配動態(tài)分配 層次單元法層次單元法 每個分程序、過程都有一個層次單元,用來存每個分程序、過程都
15、有一個層次單元,用來存放當前可以用于分配的地址放當前可以用于分配的地址2022-6-419靜態(tài)存儲分配無法克服的問題靜態(tài)存儲分配無法克服的問題1 1 動態(tài)數(shù)組問題動態(tài)數(shù)組問題 層次單元法層次單元法 層次單元層次單元 進入分程序:將直接外層分程序的層次單元內(nèi)容植入本層層進入分程序:將直接外層分程序的層次單元內(nèi)容植入本層層次單元次單元 標準單元的使用標準單元的使用 調(diào)用語句:將本層層次單元內(nèi)容送標準單元調(diào)用語句:將本層層次單元內(nèi)容送標準單元 過程說明:將標準單元內(nèi)容送本層層次單元過程說明:將標準單元內(nèi)容送本層層次單元2022-6-420靜態(tài)存儲分配無法克服的問題靜態(tài)存儲分配無法克服的問題2 2 遞
16、歸調(diào)用問題遞歸調(diào)用問題 棧式存儲分配棧式存儲分配 特點特點 嵌套調(diào)用次序嵌套調(diào)用次序 先進后出先進后出 生存期限于本次調(diào)用生存期限于本次調(diào)用 自動釋放自動釋放2022-6-421 用途用途 活動記錄活動記錄棧單元棧單元對應一次過程調(diào)用所對應一次過程調(diào)用所需存儲需存儲 過程的局部數(shù)據(jù)區(qū)過程的局部數(shù)據(jù)區(qū)活動記錄活動記錄活動記錄活動記錄活動記錄活動記錄運行棧運行棧2022-6-422活動記錄組活動記錄組織示例織示例過程數(shù)據(jù)區(qū)過程數(shù)據(jù)區(qū)結(jié)構(gòu)結(jié)構(gòu)SPSPn nSPSPn-1n-1SPSP1 1SPSP0 0數(shù)組存儲區(qū)數(shù)組存儲區(qū)本本過過程程 所所轄轄分分 第第 臨時工作單元臨時工作單元程程 一一序序 層層
17、 局部數(shù)組說明局部數(shù)組說明存存 分分儲儲 程程 局部變量局部變量區(qū)區(qū) 序序 分程序分程序TOPTOP本過程本過程DisplayDisplay形式單元(形式單元(m+1m+1個)個)連連 主調(diào)分程序主調(diào)分程序TOPTOP接接 全局全局DisplayDisplay地址地址數(shù)數(shù) 返回地址返回地址據(jù)據(jù) 主調(diào)過程主調(diào)過程SPSP本過程本過程TOPTOPSPSPSPn n為第為第n n層過程數(shù)層過程數(shù)據(jù)區(qū)首址據(jù)區(qū)首址2022-6-423靜態(tài)存儲分配無法克服的問題靜態(tài)存儲分配無法克服的問題3 3 被調(diào)用者的生存期超過調(diào)用者被調(diào)用者的生存期超過調(diào)用者/ /局部數(shù)據(jù)需局部數(shù)據(jù)需要保留(要保留( save sav
18、e ) 堆式存儲分配堆式存儲分配2022-6-424 用于動態(tài)數(shù)據(jù)結(jié)構(gòu)用于動態(tài)數(shù)據(jù)結(jié)構(gòu) 存儲空間的動態(tài)分配和釋放存儲空間的動態(tài)分配和釋放 實現(xiàn)方法實現(xiàn)方法 將內(nèi)存空間分為若干塊,根據(jù)用戶要求分配將內(nèi)存空間分為若干塊,根據(jù)用戶要求分配 無法滿足時,調(diào)用無用單元收集程序?qū)⒈会専o法滿足時,調(diào)用無用單元收集程序?qū)⒈会尫诺膲K收集起來重新分配放的塊收集起來重新分配2022-6-425 傳值調(diào)用傳值調(diào)用 call-by-valuecall-by-value 過程調(diào)用時計算實參過程調(diào)用時計算實參( (Actual)Actual),將值存到活動記錄將值存到活動記錄 形參形參( (Formal)Formal)與活
19、動記錄的實參綁定,運行時將形與活動記錄的實參綁定,運行時將形參作為局部變量使用參作為局部變量使用調(diào)用者調(diào)用者被調(diào)用者被調(diào)用者直接使用直接使用A A實際參數(shù)實際參數(shù)A A形式參數(shù)形式參數(shù)X XA A的值的值單向傳值單向傳值 引用調(diào)用引用調(diào)用 Call-by-Reference/AddressCall-by-Reference/Address 如果實參如果實參( (地址地址) )具有左值,則存放其左值到活動具有左值,則存放其左值到活動記錄中;否則計算出表達式的值,將此值存入一記錄中;否則計算出表達式的值,將此值存入一個單元,并將該單元的地址傳給被調(diào)用者個單元,并將該單元的地址傳給被調(diào)用者調(diào)用者調(diào)用
20、者被調(diào)用者間址訪問實參被調(diào)用者間址訪問實參A AA A實參實參A A形參形參X XA A的地址的地址傳地址傳地址2022-6-427復制恢復復制恢復 Copy-RestoreCopy-Restore 將參數(shù)的左、右值同時傳給被調(diào)用者,將參數(shù)的左、右值同時傳給被調(diào)用者,被調(diào)用者直接使用右值,并將計算結(jié)果被調(diào)用者直接使用右值,并將計算結(jié)果按照左值返回給調(diào)用者按照左值返回給調(diào)用者調(diào)用者調(diào)用者被調(diào)用者被調(diào)用者A A實際參數(shù)實際參數(shù)A A形式參數(shù)形式參數(shù)X XA A的值的值傳值傳值/ /傳地址傳地址A A的地址的地址2022-6-428傳名調(diào)用傳名調(diào)用Call-by-NameCall-by-Name 將
21、被調(diào)過程的過程體復制到調(diào)用處,并將被調(diào)過程的過程體復制到調(diào)用處,并將每一個形參將每一個形參“文字地文字地”替換成實參替換成實參 用換名子程序?qū)崿F(xiàn)用換名子程序?qū)崿F(xiàn)ThunkThunk 是一種早期的語言是一種早期的語言ALGOLALGOL用的一種參用的一種參數(shù)傳遞方式數(shù)傳遞方式子程序子程序P(X,Y,Z);P(X,Y,Z);Y:=Y+1;Y:=Y+1; Z:=Z+X Z:=Z+X傳值調(diào)用:傳值調(diào)用:2 2傳地址:傳地址:X=T=5,Y=Z=AX=T=5,Y=Z=A=2=2A:=A+1=2+1A:=A+1=2+1A:=A+T=3+5A:=A+T=3+58 8復制恢復:復制恢復:X=T=5,Y=Z=A
22、=2X=T=5,Y=Z=A=2Y:=Y+1=3Y:=Y+1=3Z:=Z+X=2+5=7Z:=Z+X=2+5=7Y Y A=3 A=3Z Z A=7 A=77 7換名換名A:=A+1=3A:=A+1=3A:=A+A+B=3+3A:=A+A+B=3+3+3+39 9主程序主程序A:=2; B:=3;A:=2; B:=3;P(A+B, A, A);P(A+B, A, A);Print APrint A臨時單元臨時單元: : T:A+B=5T:A+B=52022-6-430 過程過程( (procedure)procedure) 子程序子程序( (subroutine)subroutine)、函數(shù)函數(shù)
23、( (function)function) 過程的定義與調(diào)用過程的定義與調(diào)用 形參和實參的結(jié)合:參數(shù)計算與傳遞形參和實參的結(jié)合:參數(shù)計算與傳遞 調(diào)用與返回調(diào)用與返回2022-6-431 調(diào)用方:當前環(huán)境的保存與恢復調(diào)用方:當前環(huán)境的保存與恢復 被調(diào)方:構(gòu)造環(huán)境,參數(shù)綁定被調(diào)方:構(gòu)造環(huán)境,參數(shù)綁定Main( ) Sub1( 10 )Sub1( x ) Sub2( x + 1 )Sub2( y ) Sub3( )2022-6-432 簡單過程調(diào)用簡單過程調(diào)用 實在參數(shù)的計算和保存實在參數(shù)的計算和保存 控制轉(zhuǎn)移、返回地址的保存控制轉(zhuǎn)移、返回地址的保存 實在參數(shù)和形式參數(shù)的結(jié)合實在參數(shù)和形式參數(shù)的結(jié)合
24、( (多種結(jié)合方式多種結(jié)合方式) ) 局部變量的處理局部變量的處理 返回值的處理返回值的處理 遞歸過程調(diào)用與過程參數(shù)遞歸過程調(diào)用與過程參數(shù) 每層過程調(diào)用信息的保存與相應信息的查找每層過程調(diào)用信息的保存與相應信息的查找2022-6-433用于表達式的計算用于表達式的計算局部數(shù)據(jù)局部數(shù)據(jù)寄存器、程序計數(shù)器寄存器、程序計數(shù)器(返回地址)(返回地址)保存實在參數(shù)的值或保存實在參數(shù)的值或地址地址存放返回值存放返回值保存調(diào)用者活動記錄保存調(diào)用者活動記錄地址等地址等( (SP)SP)用于存取嵌套外層過用于存取嵌套外層過程中的非局部名程中的非局部名( (DisplayDisplay) )訪問鏈訪問鏈控制鏈控制
25、鏈返回值返回值實在參數(shù)實在參數(shù)機器狀態(tài)機器狀態(tài)局部變量局部變量臨時變量臨時變量數(shù)組存儲區(qū)數(shù)組存儲區(qū)本本過過程程 所所轄轄分分 第第 臨時工作單元臨時工作單元程程 一一序序 層層 局部數(shù)組說明局部數(shù)組說明存存 分分儲儲 程程 局部變量局部變量區(qū)區(qū) 序序 分程序分程序TOPTOP本過程本過程DisplayDisplay形式單元(形式單元(m+1m+1個)個)連連 主調(diào)分程序主調(diào)分程序TOPTOP接接 全局全局DisplayDisplay地址地址數(shù)數(shù) 返回地址返回地址據(jù)據(jù) 主調(diào)過程主調(diào)過程SPSP本過程本過程TOPTOP2022-6-434int sub( i, p )int sub( i, p )
26、int i;int i;char char * *p;p; char buf32; char buf32; bufi = bufi = * *(p + i);(p + i); return i + 1; return i + 1; 臨時變量臨時變量: : t t1 1,t ,t2 2,t ,t3 3局部變量:局部變量:buf32buf32機器狀態(tài):機器狀態(tài):R R0 0, , , , R R9 9, SP, PC, PS, SP, PC, PS參數(shù):參數(shù):i, pi, p返回值返回值控制鏈控制鏈DisplayDisplay2022-6-435 分析參數(shù)的類型、分配地址分析參數(shù)的類型、分配地址
27、統(tǒng)計參數(shù)和返回值的空間需求統(tǒng)計參數(shù)和返回值的空間需求 與調(diào)用語句配合完成形與調(diào)用語句配合完成形/ /實參數(shù)的結(jié)合實參數(shù)的結(jié)合 符號表處理符號表處理 完成過程名的屬性登記完成過程名的屬性登記說明語句:說明語句: Procedure id(X1,X2,Xn)2022-6-436過程說明語句代碼結(jié)構(gòu)過程說明語句代碼結(jié)構(gòu)說明語句:說明語句: Procedure id(XProcedure id(X1 1,X,X2 2, ,X,Xn n) )代碼結(jié)構(gòu)代碼結(jié)構(gòu)X X1 1.code .code 按參數(shù)傳遞要求實現(xiàn)參數(shù)按參數(shù)傳遞要求實現(xiàn)參數(shù)X X1 1的傳遞,或者完成傳遞準備;的傳遞,或者完成傳遞準備;X
28、X2 2.code .code 按參數(shù)傳遞要求實現(xiàn)參數(shù)按參數(shù)傳遞要求實現(xiàn)參數(shù)X2X2的傳遞,或者完成傳遞準備;的傳遞,或者完成傳遞準備;X Xn n.code .code 按參數(shù)傳遞要求實現(xiàn)參數(shù)按參數(shù)傳遞要求實現(xiàn)參數(shù)XnXn的傳遞,或者完成傳遞準備;的傳遞,或者完成傳遞準備;完成動態(tài)存儲分配相關(guān)的工作;完成動態(tài)存儲分配相關(guān)的工作;進入過程體進入過程體2022-6-437過程調(diào)用語句的代碼結(jié)構(gòu)過程調(diào)用語句的代碼結(jié)構(gòu)過程調(diào)用語句過程調(diào)用語句id(Eid(E1 1,E,E2 2, , ,E ,En n) )E1.codea1:=E1.placeEn.codean:=En.place動態(tài)存儲分配相關(guān)工
29、作動態(tài)存儲分配相關(guān)工作goto pc+n+1param a1param ancall id.place,n需要一個隊列需要一個隊列存放存放a a1 1, a, a2 2, , , , a an n,以生成以生成2022-6-4381 1. . 在過程在過程 f f 中調(diào)用過程中調(diào)用過程 p p 時時a. a. 對實在參數(shù)求值,將結(jié)果存入對實在參數(shù)求值,將結(jié)果存入 p p 的活動記錄參數(shù)域的活動記錄參數(shù)域b. b. 在在 p p 的活動記錄中存放返回地址的活動記錄中存放返回地址和當前棧頂指針和當前棧頂指針c. c. 按照活動記錄的大小,上移棧頂按照活動記錄的大小,上移棧頂指針指針d. d. 控制
30、轉(zhuǎn)到控制轉(zhuǎn)到 p p 的入口(過程體)的入口(過程體)臨時變量臨時變量局部變量局部變量機器狀態(tài)機器狀態(tài)參數(shù)參數(shù)返回值返回值控制鏈控制鏈Display2022-6-439臨時變量臨時變量局部變量局部變量機器狀態(tài)機器狀態(tài)參數(shù)參數(shù)返回值返回值控制鏈控制鏈Display2. 2. 進入過程進入過程p p并執(zhí)行并執(zhí)行P Pa. a. 初值寄存器值和其它狀態(tài)信息初值寄存器值和其它狀態(tài)信息b. b. 執(zhí)行過程體執(zhí)行過程體3. 3. 從過程從過程 p p 返回返回( (對應對應returnreturn語句語句) )a. p a. p 在返回值域中保存返回值在返回值域中保存返回值b. b. 恢復原棧頂指針和其它
31、寄存器恢復原棧頂指針和其它寄存器c. c. 按返回地址返回調(diào)用者按返回地址返回調(diào)用者2022-6-440產(chǎn)生式產(chǎn)生式語義規(guī)則語義規(guī)則S call id ( Elist ) S.code := Elist.code |gen(goto pc+Elist.num+1)|for 隊列隊列q q中的每一項中的每一項 t do gen(param t ) |gen(call id.place,Elist.num) Elist E Elist.num := 1; Elist.code := E.code | t:=newtemp; gen(t:= E.place);建立隊列建立隊列q q,并將并將t t
32、放入放入qElist Elist1,E Elist.num := Elist 1.num+1; Elist.code := Elist 1.code | E.code | t:=newtemp; gen(t:= E.place);將將t t 放入隊列放入隊列q2022-6-4412022-6-442t1:=bt1:=b* *c ct2:=t1-1t2:=t1-1t3:=x+yt3:=x+ygoto pc+5goto pc+5param t2param t2param t3param t3param xparam xparam yparam ycall f, 4call f, 42022-6-4
33、43賦值語句賦值語句x:=a+b+ x:=a+b+ t1:=a+bt1:=a+bt2:=bt2:=b* *c ct3:=t1-1t3:=t1-1t4:=x+yt4:=x+ygoto pc+5goto pc+52022-6-444procedure f(a,b,c,d);real f;real a,b,c,d;begin integer i,j; i:=f(a,a+b,c+a,d) j:=i+a+b; a:=i*jend在形在形/實結(jié)合實結(jié)合中,哪些細節(jié)中,哪些細節(jié)問題需要處理?問題需要處理?如何處理?如何處理?2022-6-445 種類種類關(guān)鍵字關(guān)鍵字( (保留字保留字) )表、層次表、符號表
34、表、層次表、符號表( (過過程表、變量表、標號表程表、變量表、標號表) )、常數(shù)表、常數(shù)表名字名字信息信息1 1信息信息2 2信息信息n nsum1sum1real real 所在層所在層定義定義/ /引用引用關(guān)鍵字表關(guān)鍵字表 表項結(jié)構(gòu)表項結(jié)構(gòu) 關(guān)鍵字名字關(guān)鍵字名字 ( (字符串,如字符串,如 whilewhile,if)if) 關(guān)鍵字標識關(guān)鍵字標識 ( (整數(shù)整數(shù)) ) 常用的操作:常用的操作: int IsKeyword( char Name )int IsKeyword( char Name )關(guān)鍵字名字關(guān)鍵字名字 關(guān)鍵字標識關(guān)鍵字標識beginbegin112112endend1131
35、13whilewhile1141142022-6-447 保存各級分程序、循環(huán)語句、條件語句的保存各級分程序、循環(huán)語句、條件語句的有關(guān)信息有關(guān)信息 如:局部名字、轉(zhuǎn)移標號等如:局部名字、轉(zhuǎn)移標號等 輔助實現(xiàn)標識符的管理輔助實現(xiàn)標識符的管理 標識符的作用域標識符的作用域所在層所在層 性質(zhì)性質(zhì)起點起點終點終點直接外層直接外層本層計數(shù)本層計數(shù)2022-6-448 保存名字及其屬性保存名字及其屬性 名字:變量名,過程名,標號名和常數(shù)名名字:變量名,過程名,標號名和常數(shù)名 屬性:種類(屬性:種類(KindKind),),類型(類型(TypeType),),長度,長度,作用域,標志(引用作用域,標志(引用/ /定義),地址等定義),地址等 種類:簡單變量、數(shù)組、記錄、結(jié)構(gòu)、函種類:簡單變量、數(shù)組、記錄、結(jié)構(gòu)、函數(shù)、常數(shù)、常量數(shù)、常數(shù)、常量 類型:整、實、復、布爾、字符、指針、類型:整、實、復、布爾、字符、指針、標號標號名字名字種類種類類型類型長度長度地址地址標志標志2022-6-449 作用作用 記錄源程序中出現(xiàn)的各種符號的相關(guān)屬性,記錄源程序中出現(xiàn)的各種符號的相關(guān)屬性,為編譯提供相應的信息:地址、類型為編譯提供相應的信息:地址、類型 建立表項(元組)建立表項(元組) 以標識符為關(guān)鍵字以標識符為關(guān)鍵字2022-6-450 實現(xiàn)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地埂黃花施工方案
- 吉林大型溫室工程施工方案
- 疫情期間保障工程施工方案
- 云南石雕八角亭施工方案
- 甘肅移動式u型渠施工方案
- 都勻換熱器機組施工方案
- 鶴壁硅pu籃球場施工方案
- 同花順:2024年年度財務報告
- 2025年銅及銅合金材合作協(xié)議書
- 通風管道改造施工方案
- 2024年江西工業(yè)貿(mào)易職業(yè)技術(shù)學院單招職業(yè)適應性測試題庫完整
- 《文明禮儀從我做起》文明禮儀教育主題班會課件
- 2024年安徽醫(yī)學高等??茖W校單招職業(yè)適應性測試題庫帶答案
- 2024高考數(shù)學??碱}型第15講 等比數(shù)列的通項及前n項和性質(zhì)7大題型總結(jié) (解析版)
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- 7.1.2全概率公式課件高二下學期數(shù)學人教A版選擇性
- 硝酸脂類藥物的作用注意事項不良反應
- 兩、三位數(shù)乘一位數(shù)(連續(xù)進位)(教案)-三年級上冊數(shù)學人教版
- 五年級數(shù)學(小數(shù)乘法)計算題及答案匯編
- 新質(zhì)生產(chǎn)力課件
- T-NAHIEM 101-2023 急診科建設(shè)與設(shè)備配置標準
評論
0/150
提交評論