freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課件,編譯原理,編譯原理課件,屬性文法,語(yǔ)法制導(dǎo),2005課件說(shuō)明,第十章-資料下載頁(yè)

2025-05-01 23:04本頁(yè)面

【導(dǎo)讀】構(gòu)造代碼生成程序要考慮的因素。成特定機(jī)器的目標(biāo)代碼。代碼生成器的輸入。–待裝配的機(jī)器語(yǔ)言模塊。當(dāng)需要執(zhí)行時(shí),由。尚需經(jīng)過(guò)匯編程序匯編,轉(zhuǎn)。用兩個(gè)或多個(gè)不同的指令序列完成。指令選擇器選擇其中。通常情況下,指令在寄存器中訪問(wèn)操作數(shù)的開。取入到寄存器中。作數(shù)保存在寄存器中是比較有利的。寄存器的分配可以分成兩個(gè)子問(wèn)題:。留在寄存器中的一組變量;留的具體寄存器。保留在寄存器中直到寄存器不夠分配為止。變量值時(shí)可減少對(duì)內(nèi)存的存取次數(shù),以提高運(yùn)行速度;在同一基本塊內(nèi)后邊不再被引用的變量所占用的寄存器。應(yīng)盡早釋放,以提高寄存器的利用率。–確定分配有寄存器的值應(yīng)該在哪個(gè)寄存器中。由于一些目標(biāo)機(jī)可能具有不同類型的寄存器,不同在于指令順序和寄存器的賦值。若先進(jìn)行調(diào)度,寄存器趨向于過(guò)度分配;若先。引用則可構(gòu)成待用信息鏈與活躍信息鏈。這里假定變量都是活躍的,臨時(shí)變量都是非。息欄置為“活躍”。注意,以上a)和b),c)和d)的次序不能顛倒。

  

【正文】 ? 調(diào)用宏 Iadd與 Fadd生成目標(biāo)機(jī)上的整數(shù)和浮點(diǎn)數(shù)加法指令,如對(duì) IBM360機(jī), Iadd可寫成 macro Iadd a, b from a in R1 , b in R2 emit (AR a,b) result in R1 from a in R , b in M emit (A a,b) result in R from a in M , b in R emit (A b, a) result in R 解釋性代碼生成(續(xù)) ? 在上例中宏 Add包含著實(shí)際的代碼生成算法, Iadd和 Fadd的任務(wù)是生成機(jī)器指令。相對(duì)來(lái)說(shuō), Add較獨(dú)立于機(jī)器,而 Iadd和Fadd才與機(jī)器相關(guān)。因此,當(dāng)把一個(gè)編譯程序移植到一臺(tái)新機(jī)器上時(shí), Iadd和 Fadd必須重寫,而 Add卻可保持不變。 解釋性代碼生成(續(xù)) ? 不足之處: – 由于目標(biāo)機(jī)的多樣性、尋址方式、指令的差異等等,給中間代碼的設(shè)計(jì)帶來(lái)困難; – 代碼生成語(yǔ)言與機(jī)器密切相關(guān),不一定能達(dá)到全部可移植; – 目標(biāo)機(jī)的描述與代碼生成算法混在一起,當(dāng)描述改變時(shí),勢(shì)必引起算法的改變; – 需進(jìn)行指令的選擇、指令排序等低層次的繁瑣工作,產(chǎn)生的目標(biāo)代碼質(zhì)量依賴于設(shè)計(jì)者經(jīng)驗(yàn)和能力; – 代碼生成的視野有限,雖可進(jìn)行一定范圍的優(yōu)化,但對(duì)協(xié)調(diào)上下文有關(guān)的優(yōu)化較困難。 ? 基本思想 中間表示是一序列語(yǔ)法樹,而將機(jī)器指令用樹重寫規(guī)則表示,其一般形式為: Replacement ? template 其中, Replacement為一個(gè)簡(jiǎn)單的結(jié)點(diǎn), template是一個(gè)樹 模式匹配 代碼生成 (樹重寫技術(shù) ) 基于樹重寫的代碼生成 例 : a[i]:=b+1 : = ind + Memb const1 ind + consti regsp consta regsp + + regi + {ADD Rj,Ri} regi regj (1) re gi ? c onstc {MOV c , R i } (2) re gi ? mema {MOV a , R i } (3) mema ? {MOV R i , a } (4) mema ? {MOV R j , *R i } (5) re gi ? {MOV c (R j ), R i } : = m ema r egi : = m ema r egj in d co n s tc r egj r egi + (6) regi ? {A D D c(R j ), R i }(7) regi ? {A D D R j , R i }(8) regi ? {IN C R i }+regiindconstcregj++regicost1+regiregj(1) Reg0 ? const a{MOV a, R 0 }(7) reg0 ?{AD D S P, R 0 }+reg 0 reg SP: = ind + Memb const1 ind + consti regSP reg0 + i ndc ons t i re g SP++re g 0 indco n st i re g SP+: =i ndre g 0+m e m b c ons t 1+r e g 1 c o n s t 1: =i nd re g 1re g 0MOV a, R0 ADD SP, R0 ADD i(SP),R0 MOV b,R1 INC R1 MOV R1, *R0 表驅(qū)動(dòng)代碼生成 ? 運(yùn)用形式化機(jī)器描述,利用代碼生成器的構(gòu)造器自動(dòng)產(chǎn)生代碼生成器。 ? 實(shí)際上是模式匹配生成方法的更進(jìn)一步自動(dòng)化,它模仿從語(yǔ)法描述構(gòu)造表和表驅(qū)動(dòng)的語(yǔ)法分析方法。首先把對(duì)目標(biāo)機(jī)的形式化描述進(jìn)行預(yù)加工并轉(zhuǎn)換為代碼生成表,然后用代碼生成程序驅(qū)動(dòng)代碼生成表,把中間語(yǔ)言的內(nèi)部表示翻譯成目標(biāo)機(jī)的匯編代碼。 表驅(qū)動(dòng)代碼生成(續(xù)) ? 優(yōu)點(diǎn) 這種表驅(qū)動(dòng)代碼生成方法易于使用和修改,便于可重定位目標(biāo)代碼的生成,增強(qiáng)了編譯程序的可移植性和靈活性。 ? 不足之處 它所生成的目標(biāo)代碼的質(zhì)量依賴于機(jī)器描述的完善程度,而形式化、完善地描述一臺(tái)機(jī)器并不是一件容易的事。 返回
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1