中間代碼生成1

中間代碼生成1

ID:38435094

大?。?70.00 KB

頁數(shù):21頁

時間:2019-06-12

中間代碼生成1_第1頁
中間代碼生成1_第2頁
中間代碼生成1_第3頁
中間代碼生成1_第4頁
中間代碼生成1_第5頁
資源描述:

《中間代碼生成1》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、代碼生成(I)代碼生成代碼生成目標-任務-設計目標機器模型基本塊與流圖簡單的代碼生成器寄存器分配與指派樹重寫與動態(tài)規(guī)劃代碼生成技術代碼生成目標與任務代碼生成器的位置代碼生成器的任務指令選擇寄存器分配與指派指令排序源程序前端中間代碼代碼優(yōu)化器中間代碼代碼生成器目標代碼代碼生成器設計中若干問題輸入形式三地址碼:x=y+z;x=y;x=-y;ifx

2、數(shù)據(jù)放在內(nèi)存中某個固定的位置,可立即執(zhí)行。如早期DOS下.com文件。可重定位的目標程序:需要linker/loader;可分塊編譯。匯編代碼:需借助assembler。代碼生成器設計中若干問題指令選擇-將IR(中間表示)映射為目標機指令序列;而映射的好與差取決于IR的層次、目標指令系統(tǒng)本身和期望的目標代碼質(zhì)量等因素?!吧倒稀笔降拇a骨架:針對IR:x=y+z,(1)LDR0,y(2)ADDR0,R0,z(3)STx,R0代碼生成器設計中若干問題寄存器分配與指派寄存器分配-在程序的某一點,選擇一組可放在寄存

3、器中的變量;寄存器指派-指定某個變量存放在哪一個寄存器中。目標機特殊硬件需求目標機器可能要求整數(shù)乘/除操作在由兩個特殊寄存器組成的寄存器對上!其他特殊設計:棧頂寄存器SP,棧(幀)基址寄存器BP/FP等;中間代碼序列1t=a+bt=t*ct=t/d中間代碼序列2t=a+bt=t+ct=t/d特殊寄存器需求的整數(shù)乘/除操作目標代碼1LR1,aAR1,bMR1,c//占據(jù)R0-R1DR0,dSTR1,t目標代碼2LR0,aAR0,bAR0,cSRDAR0,32DR0,dSTR1,t目標機器模型三地址機器模型、字

4、節(jié)編址。指令種類:加載指令:LDdst,addr//dst?(addr)LDr1,r2//r1?r2;寄存器拷貝操作保存指令:STx,r//x=r寄存器r的內(nèi)容寫回到內(nèi)存位置x計算指令:OPdst,src1,src2//在src1(第一操作數(shù),即左運算量)和src2(第二操作數(shù),即右運算量)之間實施OP運算,其結(jié)果放于目的位置dst中。三個位置不一定互不相同!如:SUBr1,r2,r3,即為r1?r2-r3;以及ADDr1,r1,r2表示r1?r1+r2無條件跳轉(zhuǎn):BRL將使控制流轉(zhuǎn)向標號為L的機器指令;條

5、件跳轉(zhuǎn):Bcondr,L//測試r,滿足則轉(zhuǎn)標號L處指令;否則執(zhí)行下條指令。目標機器模型尋址模式-名字地址:LDr1,y//r1?位置y的值-寄存器:ADDr1,r2,r3//r1?r2+r3-基址+變址:LDr1,c(r2)//r1?(c+r2)-間址訪問:LDr1,*r2//r1?(r2)LDr1,*c(r2)//r1?((c+r2))-直接量:ADDr1,r2,#100//r1?r2+100指令的代價cost=1+各運算分量尋址模式代價寄存器尋址代價為0;內(nèi)存地址和直接量均為1。目標機器模型若干目標指

6、令序列示例:三地址代碼x=y–zb=a[i]ifx

7、條件/無條件)跳轉(zhuǎn)。圍繞基本塊的優(yōu)化:塊內(nèi)優(yōu)化--局部優(yōu)化塊間優(yōu)化--全局優(yōu)化基本塊的劃分算法首先,確定基本塊的首指令:中間代碼的第一條三地址指令;任意一個條件或無條件跳轉(zhuǎn)指令的目標指令;緊跟在一個條件或無條件跳轉(zhuǎn)指令后的指令;其次,確定基本塊的范圍:從一個首指令開始(包括該首指令)到(連續(xù)的)下一個首指令(不包括那個首指令)或中間代碼結(jié)束指令(最后一個基本塊的最后一條指令)之間的所有指令?;緣K劃分示例//程序1//10X10矩陣初始化,//并置為單位矩陣forifrom1to10doforjfrom1t

8、o10doa[i,j]=0.0;forifrom1to10doa[i,i]=1.0;i=1j=1t1=10*it2=t1+jt3=8*t2t4=t3–88a[t4]=0.0j=j+1ifj<=10goto(3)i=i+1ifi<=10goto(2)i=1t5=i–1t6=88*t5a[t6]=1.0i=i+1ifi<=10goto(13)首指令1首指令3首指令2首指令4首指令5首指令6基本塊劃分示例(Cont.)

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。