版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
編譯原理實踐
--語義分析與代碼生成table數(shù)組和enter過程的擴充命令代碼生成過程gen表達式、項、因子及關(guān)系式的翻譯語句的翻譯生成PL/0目標(biāo)代碼程序1.table數(shù)組和enter過程的擴充lodl,a 將l,a形成的棧地址變量值置入棧頂stol,a將棧頂值保存到l,a形成的棧地址變量l level級別之差 變量所處的程序段靜態(tài)級別與 變量被說明時的靜態(tài)級別之差a offsetcall,a 調(diào)用子程序l level級別之差
call語句所處的程序段靜態(tài)級別與 調(diào)用過程被說明時的靜態(tài)級別之差a 被調(diào)用代碼程序段的起始地址必須將variable和procedure的level保存在合適的地方改變符號表,增加相應(yīng)的字段(P144圖11-1)object=(constant,variable,prozedure);table:array[0..txmax]of recordname:alfa; casekind: objectofconstant:(val:integer); variable,prozedure: (level,adr,size:integer); end;常量:val變量:靜態(tài)級別,位移地址Procedure:程序地址,靜態(tài)級別,預(yù)留存儲單元procedureenter(k:objekt);begin(*enterobjectintotable*)tx:=tx+1;withtable[tx]dobeginname:=id;kind:=k;casekofconstant:beginifnum>amaxthenbeginerror(31);num:=0end;val:=numend;variable:beginlevel:=lev;adr:=dx;dx:=dx+1;end;prozedure:level:=levendendend(*enter*);2.命令代碼生成過程gen每調(diào)用一次過程gen,在程序存儲器里產(chǎn)生一條代碼指令proceduregen(x:fct;y,z:integer);beginifcx>cxmaxthenbeginwrite('programtoolong');haltend;withcode[cx]dobeginf:=x;l:=y;a:=zend;cx:=cx+1end(*gen*);3.表達式、項、因子及關(guān)系式的翻譯表達式的翻譯中綴表達式與后綴表達式后綴表達式:操作符總是跟隨在它操作數(shù)的后邊后綴表達式翻譯規(guī)則T(“+”term)=T(term)T(“-”term)=T(term)“-”T(term1”+”term2)=T(term1)T(term2)“+”T(term1”-”term2)=T(term1)T(term2)“-”T(term1”*”term2)=T(term1)T(term2)“*”T(term1”/”term2)=T(term1)T(term2)“/”T(“(”expression”)”)=T(expression)Example(x+y)/(z-w)后綴表達式 xy+zw-/LodxLodyOpr0,2LodzLodwOpr0,3Opr0,5AnotherexampleT(x-6*(z+w)<(x+y)/(12-w))expression過程的擴充term過程的擴充factor過程的擴充condition過程的擴充4.語句的翻譯賦值語句的翻譯處理T(Ident”:=”expression)T(expression)Stolev-level,adrif語句的翻譯處理T(“if”condition“then”statement)T(condition)Jpc,L1T(statement)L1:…while語句的翻譯處理T(“while”condition“do”statement) L1: T(condition) Jpc,L2 T(statement) jmpL1 L2: …call語句的翻譯處理T(“call”ident) cal,lev-level,adr5.生成PL/0目標(biāo)代碼程序執(zhí)行program6在SI-NS圖上執(zhí)行program6直接從PL/0程序翻譯寫出目標(biāo)代碼程序?qū)Ψ殖绦虻亩x
procedure block(lev,tx:integer;fsys:symset);vardx:integer;(*dataallocationindex*)
tx0:integer;(*initialtableindex*)
cx0:integer;(*initialcodeindex*)(tx0是保留本過程名在名字表中的位置;
cx0
是保留本過程目標(biāo)代碼的起始位置)lev:本過程所在層次(主程序為0層)tx+1:本過程的標(biāo)識符在Table表中的起始位置fsys:出錯處理用分程序體的處理(程序)對分程序體入口的處理(P171頁block的過程體)
begin(*block*)
dx:=3;(為該過程變量分配存儲空間的起始位置,也就是相對基地址的偏移量)
tx0:=tx;(保留當(dāng)前table表指針值,是該過程名在table表中的位置)
table[tx].adr:=cx;(保留當(dāng)前code指針值到過程名的adr域)
gen(jmp,0,0);(生成轉(zhuǎn)向過程體入口的指令,地址待回填)分程序體的處理(程序)其中:
cx
已保留在過程名的adr域,等生成過程體入口的指令時,再由table[tx].adr中找到cx將過程體入口返填到cx中,即(jmp,0,0)的第3區(qū)域。同時將過程體入口填到過程名的table[tx].adr中。
CONSTA=35,B=49;
VARC,D,E;
PROCEDUREP;
VARG分程序的處理
名字類型層次/值地址存儲空間(0)jmp00CX:(1)jmp00table[tx].adr:=cx;記錄過程在code的入口到table中的adr域tx
過程體入口時的處理過程體入口時的處理code[table[tx0].adr].a:=cx;
(回填過程入口地址到code的a中)withtable[tx0]dobegin
adr:=cx;(過程的入口填寫在table中)
size:=dx;(過程占的空間填寫在table中)
end;
cxo:=cx;gen(int,0,dx);(生成過程入口指令)保留過程在code中的入口地址,打印目標(biāo)代碼用
CONSTA=35;B=49;
VARC,D,E;
PROCEDUREP;
VARG過程體入口時的處理
名字類型層次/值地址存儲空間(0)jmp00(1)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026江蘇連云港東海水晶產(chǎn)業(yè)發(fā)展集團有限公司招聘專業(yè)技術(shù)人員2人考試備考試題及答案解析
- 2026湖南省煙草專賣局系統(tǒng)考試聘用人員272人考試備考試題及答案解析
- 豐城市衛(wèi)健系統(tǒng)公開招聘編外人員【18人】考試備考試題及答案解析
- 2026河南鄭州市黃河科技學(xué)院附屬中學(xué)招聘考試參考題庫及答案解析
- 2026年貴州城市職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考試題帶答案解析
- 2026年南京市雨花臺區(qū)教育局所屬學(xué)校公開招聘教師68人考試備考題庫及答案解析
- 2026江蘇省數(shù)據(jù)集團中層管理崗位招聘1人筆試備考題庫及答案解析
- 2026廣西崇左市人民醫(yī)院招聘(第二批次)考試備考題庫及答案解析
- 2026湖北武漢市華中農(nóng)業(yè)大學(xué)園藝林學(xué)學(xué)院招聘葡萄栽培與品質(zhì)調(diào)控方向?qū)H谓處熆荚噮⒖碱}庫及答案解析
- 2026云南曲靖市宣威市發(fā)展和改革局招聘編制外工作人員5人考試備考試題及答案解析
- 新疆農(nóng)林牧特色課件
- 2025四川成都益民集團所屬企業(yè)招聘財務(wù)綜合崗等崗位備考題庫及答案1套
- 國資與私有企業(yè)合作運營案例分享
- 個人船只轉(zhuǎn)讓協(xié)議書
- 2025微博x益普索手機行業(yè)社交生態(tài)解析及熱點價值洞察白皮書
- 拼接屏系統(tǒng)維護施工方案
- 甲狀腺腫瘤的課件
- 新型鋁合金雨棚施工方案
- 武警中隊營房及附屬工程項目可行性研究報告
- 2025年國家開放大學(xué)《社會調(diào)查研究方法》期末考試復(fù)習(xí)試題及答案解析
- 《數(shù)字經(jīng)濟概論》全套教學(xué)課件
評論
0/150
提交評論