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

正文內(nèi)容

課件,編譯原理,編譯原理課件,屬性文法,語(yǔ)法制導(dǎo),2005課件說(shuō)明,第十章-wenkub.com

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

【正文】 表驅(qū)動(dòng)代碼生成(續(xù)) ? 優(yōu)點(diǎn) 這種表驅(qū)動(dòng)代碼生成方法易于使用和修改,便于可重定位目標(biāo)代碼的生成,增強(qiáng)了編譯程序的可移植性和靈活性。 解釋性代碼生成(續(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)化較困難。 ? 機(jī)器描述是通過(guò)過(guò)程的形式提供的,如:Miller曾采用如下方法進(jìn)行代碼生成,它把源程序映象成兩地址代碼序列,然后進(jìn)行代碼生成。 (3) 將 n列入表中 。從 g e t r e g 返回時(shí),得到一寄存器 R ,用它作存放 A現(xiàn)行值的寄存器; 2 . 利用 A V A L U E [ B ] 和 A V A L U E [ C ] ,確定出 B 和 C 現(xiàn)行值存放位置 B` 和 C` ,如果其現(xiàn)行值在寄存器中,則把寄存器取作 B` 和 C` ; ( 1 ) 如 B` ≠ R ,則生成目標(biāo)代碼 L D R , B ` o p R , C ` 否則,生成目標(biāo)代碼 o p R , C` 如 B` 或 C` 為 R ,則刪除 A V A L U E [ B ] 或 A V A L U E [ C ] 中的 R ( 2 ) 令 A V A L U E [ B ] = { R } ,并令 R V A L U E [ R ] = { A } ,以表示變量 A 的現(xiàn)行值只在 R 中并且 R 中的值只代表 A 的現(xiàn)行值; ( 3 ) 如 B 或 C 的現(xiàn)行值在基本塊中不再被引用,它們也不是基本塊出口之后的活躍變量(由四元式 i 上的附加信息知道),并且其現(xiàn)行值在某個(gè)寄存器 Rk 中,則刪除 R V A L U E [ R k ] 中的 B 或 C 以及 A V A L U E [ B ] 或 A V A L U E [ C ] 中的 Rk ,使該寄存器不再為 B 或 C 所占用。 例: 若用 A , B , C , D 表示變量,用 T , U , V 表示中間變量,有四元式如下:( 1 ) T: = A B( 2 ) U : = A C( 3 ) V : = T+ U( 4 ) D : = V + U其名字表中的待用信息和活躍信息如下表,用 “ F ”表示 “非待用” “非活躍”,用 “ L ”表示活躍。 b ) 把符號(hào)表中變量 A 的待用信息欄和活躍信息欄分別置為 “非待用 ” 和 “非活躍 ” 。 計(jì)算待用信息的算法: 對(duì)各基本塊的符號(hào)表中的 “待用信息 ” 欄和 “活躍信息 ” 欄置初值,即把 “待用信息 ” 欄置 “非待用 ” ,對(duì) “活躍 信息 ” 欄按在基本塊出口處是否為活躍而置成 “活躍 ” 或 “非活躍 ” 。 圖 指令調(diào)度(續(xù)) ? 不同在于指令順序和寄存器的賦值 返回 ? 在代碼生成過(guò)程中,這三者的關(guān)系非常密切。 返回 指令調(diào)度 ? 對(duì)具有流水線限制的體系結(jié)構(gòu),這個(gè)階段是必須的。 寄存器分配原則 ? 生成某變量的目標(biāo)代碼時(shí) , 盡量讓變量的值或計(jì)算結(jié)果保留在寄存器中直到寄存器不夠分配為止 。由此可見(jiàn),將經(jīng)常使用的操作數(shù)保存在寄存器中是比較有利的。指令選擇器選擇其中之一以產(chǎn)生最好的代碼。 ? 代碼生成器 完成代碼生成這一過(guò)程的程序稱為代碼生成器,如圖所示。 代碼生成器的 位置 ?代碼生成器的輸入 –中間代碼 –符號(hào)表中的信息 編譯前端 代碼優(yōu)化 代碼生成器符號(hào)表目標(biāo)程序源程序中間代碼中間代碼? 目標(biāo)代碼一般有三種形式: – 能夠立即執(zhí)行的機(jī)器語(yǔ)言代碼,所有地址均已定位 – 待裝配的機(jī)器語(yǔ)言模塊。 ? 指令選擇的基本原則 – 減小產(chǎn)生代碼的尺寸 – 減小目標(biāo)代碼的執(zhí)行時(shí)間 返回 指令選擇(續(xù)) 目標(biāo)機(jī)器的地址方式 地址方式 匯編形式 地址 增加的開(kāi)銷 直接地址方式 M M 1 寄存器方式 R R 0 間接寄存器方式 *R contents(R) 0 索引方式 c(R) c+contents(R) 1 間接索引方式 *c(R) contents( c+contents(R)) 1 a:=b+c 1. MOV b, R0 ADD c, R0
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1