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

正文內(nèi)容

編譯原理之代碼生成-資料下載頁(yè)

2025-05-13 04:33本頁(yè)面
  

【正文】 、 v是局部臨時(shí)變量 ?將基本塊翻譯成代碼 ,只有三個(gè)寄存器 t = a b u = a – c v = t + u a = d d = v + u 例 ( 2) 寄存器描述符 地址描述符 圖 816 生成的指令及寄存器和地址描述符的改變過(guò)程 初始 例 ( 3) 寄存器描述符 地址描述符 圖 816 生成的指令及寄存器和地址描述符的改變過(guò)程 getReg函數(shù)的設(shè)計(jì)( 1) ?目標(biāo):減少 LD/ST指令 ?任務(wù):為運(yùn)算分量和結(jié)果分配寄存器 ? 例: x= y+z ?為運(yùn)算分量 y分配寄存器 ? 若 y已在某個(gè)寄存器中,不需處理 ? 若 y不在寄存器中,且有空閑寄存器,選擇這個(gè)寄存器 ? 若 y不在寄存器中,且沒(méi)有空閑寄存器(見(jiàn)下頁(yè)) getReg函數(shù)的設(shè)計(jì)( 2) ?為運(yùn)算分量 y分配寄存器 ? … 如果不在寄存器中,且沒(méi)有空閑寄存器,則尋找一個(gè)可使用的寄存器 R ? 設(shè) R的寄存器描述符表示變量 v在 R中,若 V滿足以下三種情況之一,則可以選擇寄存器 R分配給 y: ? v還有其他存儲(chǔ)位置 ? v就是 x,且 x不是運(yùn)算分量之一 (怕 v被修改 ) ? V此后不再被使用 ? 如果前面三條不滿足。則只好生成保存指令 ST v R;(溢出操作)修改 v的地址描述符; ? 若 R中存放了多個(gè)變量的值,則需要生成多個(gè) ST指令; ? ST指令數(shù)目就是選擇 R的得分。得分最低則找到了最合適的R getReg函數(shù)的設(shè)計(jì)( 3) ?為 x選擇寄存器 Rx的方法類似 y,但 ? 如有一個(gè)只存了 x值的寄存器,則可選該寄存器 ? 若 y在指令 I之后不再使用,且 Ry僅僅保存了 y的值,則 Ry同時(shí)也可作為 Rx; ?處理 x=y時(shí),總讓 Rx=Ry。 窺孔優(yōu)化 ?使用一個(gè)滑動(dòng)窗口(窺孔)來(lái)檢查目標(biāo)指令,在窺孔內(nèi)實(shí)現(xiàn)優(yōu)化 ? 冗余指令消除 ? 控制流優(yōu)化 ? 代數(shù)簡(jiǎn)化 ? 機(jī)器特有指令的使用 消除冗余指令 ?多余的 LD/ST指令 ? LD R0 a ? ST a R0 ? 且沒(méi)有指令跳到第二條指令處,即第二指令沒(méi)有標(biāo)號(hào)??梢詣h除第二條指令 消除不可達(dá)指令 ?緊跟在無(wú)條件轉(zhuǎn)移指令后不帶標(biāo)號(hào)的指令 ? 重復(fù)這個(gè)操作,可刪除一個(gè)指令序列 ?級(jí)聯(lián)跳轉(zhuǎn)代碼 ? 比如示例:調(diào)試代碼(當(dāng) debug= 1時(shí)才運(yùn)行的程序片斷)的原始中間代碼可能如下: ?if debug==1 goto L1 ?goto L2 ?L1:print debugging information ?L2: 有兩個(gè) GOTO 消除不可達(dá)指令 ?級(jí)聯(lián)跳轉(zhuǎn)代碼消除 ? 調(diào)試代碼(當(dāng) debug= 1時(shí)才運(yùn)行的程序片斷)的中間代碼形如: ?if debug==1 goto L1 ?goto L2 ?L1:print debugging information ?L2: ? 可替換為: ?if debug!=1 goto L2 ?print debugging information ?L2: 消除不可達(dá)指令 ?級(jí)聯(lián)跳轉(zhuǎn)代碼 ? 調(diào)試代碼可替換為: ?if debug!=1 goto L2 ?print debugging information ?L2: ? 如果已知 debug一定是 0,那么第一條指令替換成為goto L2;(比如,生成 release版本) ? 替換后,打印調(diào)試信息的所有指令變?yōu)椴豢蛇_(dá)指令,可刪除 控制流優(yōu)化 ?goto L1。 … … 。 L1: goto L2 替換為: goto L2。 … … 。 L1: goto L2 若沒(méi)有跳轉(zhuǎn)到 L1的指令,且指令 L1: goto L2之前是一個(gè)無(wú)條件跳轉(zhuǎn)指令,則 L1該行指令可刪除。 控制流優(yōu)化 ?if ab goto L1 … … L1: goto L2 替換為: if ab goto L2 … … L1: goto L2 代數(shù)化簡(jiǎn) /強(qiáng)度消減 ?應(yīng)用代數(shù)恒等式進(jìn)行優(yōu)化 ?消除 x=x+0 x=x*1 ?x*x替換 x2 ?使用機(jī)器特有指令 ? INC, DEC, … 寄存器分配和指派 ?目的:有效利用寄存器; ?簡(jiǎn)單的基本方法:把特定類型的值分配給特定的寄存器 ? 數(shù)組基地址指派給一組寄存器 ? 算術(shù)計(jì)算分配給一組寄存器 ? 棧頂指針?lè)峙湟粋€(gè)寄存器 ? 。 ?缺點(diǎn):寄存器的使用效率較低
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1