目標程序生成實驗_第1頁
目標程序生成實驗_第2頁
目標程序生成實驗_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、實 驗 八目 標 程 序 生 成【實驗目的】了解目標代碼生成階段在編譯處理過程中的功能和作用了解常用的三種目標代碼形式及其優(yōu)缺點了解虛擬機及其指令系統(tǒng)深入理解并掌握有中間代碼向目標代碼轉換的過程和原理【實驗學時】4學時【實驗要求】熟練掌握虛擬機的指令系統(tǒng)理解并掌握指令選擇的方法理解多寄存器分配的原則和方法熟練掌握基本語句從四元式中間代碼形式到目標代碼的翻譯原理和方法獨立完成目標代碼生成程序【實驗原理】一、四元式到目標代碼的轉換分析.取ARG結構值對應的目標代碼四元式中間代碼的操作分量和目標量以ARG結構給出,在生成目標代碼的過程中,首先要根據(jù)ARG結構取得對應的值或者地址,存入累加寄存器ac中

2、,再生成運算的目標代碼。從ARG結構取值的過程如下表所示:ARG結構種類取值對應的目標代碼常量cLDC , ac, c, 0labLDC , ac, lab, 0源變量或臨時變量v直接變量取v的絕對地址到 ac;(表-2)LD , ac, 0, ac間接變量取v的絕對地址到 ac;(表-2)LD , ac1, 0, acLD , ac, 0, ac1取ARG結構值對應的目標代碼示意表2.取變量的絕對地址對應的目標代碼如下表所示:變量種類取絕對地址對應的目標代碼源變量vLDA , ac, ADD , ac, LDC , ac1 ADD , ac, 注:level為變量vlevel, displa

3、yoff ac, sp,off, 0ac , ac1所在的層數(shù),off為變量v的偏移。臨時變量tLDC , ac1, off, 0ADD , ac, sp, ac1 注:off為臨時變量t的偏移量取變量的絕對地址對應的目標代碼示意表、關鍵問題的處理1.標號和跳轉的處理:處理標號和跳轉,需要用到標號地址表;表的結構為:中間代碼標號目標代碼地址下一項Labeldestnumnext(1)遇到標號定位時:設標號為L,應轉向的目標代碼為pl,分為兩種情況:?在標號地址表中沒有 L項,則填寫表項(L, p1,NULL),并鏈入表尾;?在標號地址表中有 L項(L, addr, Next),則根據(jù)當前 pc

4、,回填addr對應的目標代碼。(2)遇到跳轉代碼時:設要跳到的標號為L,這條語句對應的目標地址為p2,分為兩種情況:?在標號地址表中沒有 L項,則構造一個表項(L, p2, NULL),鏈入表尾;?在標號地址表中有L項(L, pl, next),則從中取出L的代碼地址pl,直接生成目標代碼.形實參結合的處理:(1)形參為值參:?實參是常數(shù)值:將常數(shù)值送入相應存儲單元;?實參是直接變量:找到變量的存儲地址,取值,送相應存儲單元;?實參是間接變量:此時變量的存儲單元存放的是地址。找到變量的存儲地址,取內(nèi)容作為地址,再取內(nèi)容,得到實參值,送相應存儲單元;(2)形參為變參:這時實參必須是變量,長度為1

5、。? 實參是直接變量:應將實參變量的地址送入形參單元;找到變量的存儲地址,送相應存儲單元;?實參是間接變量:要送實參變量單元的內(nèi)容;找到變量的存儲地址,取內(nèi)容,送相應存儲單元。.過程調(diào)用的工作分配:由于過程調(diào)用中的有些工作是相同的,如果都放在調(diào)用語句處處理,當一個過程被多個過程調(diào)用時,就要重復很多目標代碼。從語法樹生成目標代碼時,所有過程調(diào)用的處理工作都必須放在調(diào)用語句處進 行處理。而從中間代碼生成目標代碼時,由于有過程入口和過程出口中間代碼的存在,我們就可以把有些工作安排在子程序的入口和出口處完成。這樣,過程調(diào)用中的整個工作(除過程體的執(zhí)行部分)可分配到過程調(diào)用處,過程入口處和過程出口處。這樣就可以節(jié)省一些目標代碼。具體分配如下:?過程調(diào)用代碼完成:保存舊的display表的偏移量;設置新的display表的偏移;保存返回地址;轉向過程入口。?過程入口處完成:保存sp值;保存層數(shù);保存累加寄存器的內(nèi)容,ac, ac1, ac2構造 NewAR 的 Display 表;修改 sp 和 top 值:sp:=top ; top:= top+NewAR.Size?過程出口處完成:恢復寄存器的內(nèi)容;恢復 sp 和 top 的值:top:=sp ; sp:=CurrentAR.sp ;取出返回地址,返回?!緦嶒灢襟E】熟

溫馨提示

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

最新文檔

評論

0/150

提交評論