版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、XXXXXX計算機系綜合性實驗實驗報告課程名稱編譯原理實驗學(xué)期 XXXX 至 XXXX 學(xué)年 第匕 學(xué)期學(xué)生所在系部計算機系年級 X 專業(yè)班級XXXXXX學(xué)生姓名XXX 學(xué)號 XXXXXXXXXXXX任課教師XXX實驗成績計算機系制編譯原理課程綜合性實驗報告開課實驗室:年 月日實驗題目I分析中間代碼生成程序一、實驗?zāi)繄畏治鯬L/0編譯程序的總體結(jié)構(gòu)、代碼生成的方法和過程;具體寫出一條語句的 中間代碼生成過程。二、設(shè)備與環(huán)境PC兼容機、Windows操作系統(tǒng)、Turbo Pascal軟件等。三、實驗內(nèi)容.分析PL/0程序的Block子程序,理清PL/0程序結(jié)構(gòu)和語句格式。畫出Block 子程序的
2、流程圖,寫出至少兩條 PL/0程序語句的語法格式。.分析PL/0程序的Block子程序和Gen子程序,了解代碼生成的方法和過程。 使用概要算法來描述語句的代碼生成過程。.自己編寫一個簡單的PL/0程序,能夠正確通過編譯,得到中間代碼。列出自 己編寫的源程序和編譯后得到的中間代碼。.從中選擇一個語句或表達式,寫出代碼生成的過程。要求從自己的源程序中 選擇一條語句,結(jié)合這條語句寫出語義分析和代碼生成過程。在描述這個過 程中,要說清楚每個功能有哪個子程序的哪條語句來完成,說清楚語句和參 數(shù)的含義和功能。四、實驗結(jié)果及分析(一)Block子程序分析.常量聲明的分析:常量聲明部分的語法結(jié)構(gòu)定義為如下形式
3、: - const ; - ;-id = C其中C可以是常量標(biāo)識符或字符串或整數(shù)(可帶符號)或?qū)崝?shù)(可帶符號)。常量聲明分析程序的主要任務(wù)是:.掃描整個常量聲明部分。.為被聲明的常量標(biāo)識符建立符號表項。.檢查重復(fù)的聲明。.變量聲明部分的分析:變量聲明部分的語法結(jié)構(gòu)定義為如下形式:- var- ;-:T-id,其中idList是被定義的變量標(biāo)識符序列,T是類型表達式。變量聲明分析程序的主要任務(wù)是:.掃描整個變量聲明部分,并進行語義錯誤檢查。(2),為被聲明的變量標(biāo)識符建立相應(yīng)符號表項。3.Block子程序流程圖:(二)代碼生成的方法和過程:Block子程序:首先置TX的初值,令DX=3,判讀嵌套
4、層數(shù)是否大于最允的嵌 套層數(shù),如果大于,則發(fā)出32號錯誤。小于然后讀入一個token,當(dāng)讀入的當(dāng)前token 是常量保留字,轉(zhuǎn)入常量聲明處理。如果 sym遇到逗號則反復(fù)聲明下一個常量,獲 取下一個token,聲明以當(dāng)前token為標(biāo)識符的常量。如果sym遇到分號,常量聲明 結(jié)束。獲取下一個token,當(dāng)讀入的是變量保留字,轉(zhuǎn)入變量聲明處理,過程與常量 聲明類似。當(dāng)讀入的當(dāng)前token是過程保留字時,把過程名和它所在的層次填入符號 表,遞歸調(diào)用block分析過程,當(dāng)前的層次加一。如果不是過程保留字,如果是一個 語句的開始,則進行語句處理,直至結(jié)束。Gen子程序:目標(biāo)代碼生成過程gen用于把生成的
5、目標(biāo)代碼寫入目標(biāo)代碼數(shù)組。 如果cxcxmax表示當(dāng)前生成的代碼行號大于允許的最大代碼行數(shù),輸出“program toolong”。然后,把代碼寫入目標(biāo)代碼數(shù)組的當(dāng)前 cx所指位置,移動cx指針指向下一 個空位。(三)編寫一個簡單的PL/0程序PL/0程序為:const a=10;var b,c;procedure p;beginc:=2*(1+b)end;beginif a=10 thenbeginb:=2;call p;endend.將其保存為txt格式文彳存于EB下運行后結(jié)果如下:心* Turbo Pascal7. 0pleaseinputsource progranfile name:
6、,txt0consta =10;1uar91proceduirep;1bein3c;=2*Cl*h7end8jmp1&1122int133lit124lit115lod13Gopr127opr148sto149opr101Idbegin11ifa =10then14begin15b:=2;17call 18end18end.Qjnp1101jnp122int133lit124lit115lod136opp12?opr148atu149opr1010int1511lit11012lit11013opr1814JPC11815lit1216st u1317cal1218opr10atari9t p
7、l/06enri pl/0(四)分析上述程序中c:=2*(l+w);的代碼生成過程在上述程序中,當(dāng)調(diào)用block子程序分析這段語句時,遇到 c,查符號表, 判斷是常量還是變量,入棧,遇到“:=”時,繼續(xù)讀下一字符,判斷如c,并依 次將2、1和b入棧。第一個截圖是過程p,句子就在這里,首先生成一個int的 目標(biāo)碼,分配一個3個單元的數(shù)據(jù)區(qū),然后又生成兩條lit代碼分別將2、1入棧, 再后有一條10d代碼,是將b入棧的。入棧后開始計算1+b (opr 1 2),此時棧頂 元素為1+b的結(jié)果,再計算乘2 (opr 1 4),次棧頂乘以棧頂然后退兩棧,結(jié)果入棧,此時數(shù)據(jù)區(qū)中就是 2* (1+b)的結(jié)果了,通過一條sto代碼將結(jié)果存入偏 移為4的單元中,就是co在土程序中也可以找到這一段,土程序中,先開辟了 5個數(shù)據(jù)區(qū),然后跳到10的位置,把a入棧,10入棧,判斷兩個值是否相等, 不等的話就繼續(xù)往下,程序結(jié)束,如果相等的話,給b賦值后,就ca
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《水資源規(guī)劃及利用》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《流行病學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《教育電視節(jié)目編導(dǎo)與制作》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《陶瓷》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《面向?qū)ο蟪绦蛟O(shè)計及應(yīng)用》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《機械工程控制基礎(chǔ)》2023-2024學(xué)年期末試卷
- 沈陽理工大學(xué)《編譯原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 國企合同工工資標(biāo)準
- 合同 確認書 備忘錄
- 合同法案例教程
- 中國鐵路國際有限公司招聘考試試卷2022
- 電子政務(wù)概論-形考任務(wù)5(在線測試權(quán)重20%)-國開-參考資料
- 古代小說戲曲專題-形考任務(wù)2-國開-參考資料
- 構(gòu)美-空間形態(tài)設(shè)計學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 產(chǎn)萬噸高密度聚乙烯聚合工段工藝設(shè)計
- (完整版)小學(xué)第三人稱單數(shù)練習(xí)題及答案
- 農(nóng)民合作社成員帳戶計算表
- 機械制圖CAD_(教案)全部
- 串并聯(lián)電路說課稿
- 上海市重點建設(shè)項目社會穩(wěn)定風(fēng)險評估咨詢收費辦法
- 畫法幾何習(xí)題集第六章答案大連理工大學(xué)版
評論
0/150
提交評論