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

正文內(nèi)容

第八章代碼生成序81目標(biāo)機(jī)器82運(yùn)行存儲(chǔ)管理83基本塊-資料下載頁(yè)

2024-10-24 14:11本頁(yè)面

【導(dǎo)讀】按字節(jié)編址,以4個(gè)字節(jié)為一個(gè)字.通用寄存器R0,R1,…destination稱為源和目的,是數(shù)據(jù)域。存儲(chǔ)單元的內(nèi)容。對(duì)絕大多數(shù)機(jī)器和絕大多數(shù)指令而言,行該指令的時(shí)間。有效地利用它的地址能力和寄存器。運(yùn)行時(shí)刻管理活動(dòng)記錄應(yīng)生成哪些代碼,靜態(tài)分配和棧式分配。1.call(調(diào)用);2.return(返回);3.halt(暫停);MOV指令存放返回地址。對(duì)地址12,則x的實(shí)際地址應(yīng)為static+12。注意在寄存器R3中的值不能在編譯時(shí)確定。流圖,它對(duì)理解代碼生成算法是很有用的。流圖中的結(jié)點(diǎn)表示計(jì)算,邊表示控制流向。離開(kāi),中途沒(méi)有停止或分枝。塊中〕它的值在該點(diǎn)以后被引用。語(yǔ)句僅在一個(gè)塊中。其基本塊是由該入口。間的語(yǔ)句序列組成。

  

【正文】 不再活躍。 ADD c, Ri 其開(kāi)銷為 2 ( 3)或者 MOV c, Rj ADD Rj, Ri 其開(kāi)銷為 3 8. 5. 1寄存器描述器和地址描述器 代碼生成算法將使用寄存器描述器和地址 描述器來(lái)記錄寄存器的內(nèi)容和名字的地址。 31 1.寄存器描述器記錄每個(gè)寄存器的當(dāng)前內(nèi) 容,每當(dāng)需要一個(gè)新的寄存器時(shí),首先 查看此描述器。假定在初始時(shí)寄存器描 器指示所有的寄存器均為空。當(dāng)對(duì)基本 塊進(jìn)行代碼生成時(shí),每個(gè)寄存器在任一 給 定時(shí)刻將保留零個(gè)或多個(gè)名字的值 。 2.地址描述器記錄在運(yùn)行時(shí)刻的一個(gè)名字 的當(dāng)前值存放的一個(gè)位置或多個(gè)位置。 它可能是一個(gè)寄存器地址、一個(gè)棧地址 、一個(gè)存儲(chǔ)單元地址、或這些地址的 一個(gè)集合。 32 8. 5. 2 代碼生成算法 對(duì)每個(gè)形如 i: x:= y op z {下次引用信息 } 依次執(zhí)行下述步驟: 1. L: = getreg( i: x:=y op z) L常常是一個(gè)寄存器,也可能是一個(gè)存 儲(chǔ)單元,用來(lái)存放計(jì)算 y op z所得的結(jié)果。 2. 考慮 y的地址描述器以確定 y?, y ?為 y的 值當(dāng)前的存放位置。若 y的值同時(shí)在主 存中和一個(gè)寄存器中,那么 y ?取寄存器 更好。若 y的值尚不在 L中,則生成指令 : MOV y39。, L 33 3.生成指令 op z39。, L 其中 z39。為 z的值存放的地址。同樣,若 z的 值同時(shí)存放在主存中和一個(gè)寄存器中,則取 z39。為寄存器。然后,更新 x的地址描述器以記 錄 x在 L中。如果 L是一個(gè)寄存器,則更新這個(gè) 寄存器描述器以記錄該寄存器存有 x的值。 4.如果 y和(或) z的當(dāng)前值沒(méi)有下次引用, 在基本塊的出口又是非活躍的,并且是在寄 存器中,則更新 y的和(或) z的寄存器描述 器和地址描述器以表示,在執(zhí)行 i: x:= y op z 之后,這些寄存器不再包含 y和(或) z的值。 34 一旦處理完一個(gè)基本塊的所有三地址語(yǔ)句, 生成 MOV Rx, Mx 存儲(chǔ)那些在基本塊的出口處是活躍的并且還 不在它的存儲(chǔ)單元中的名字 x的值。為進(jìn)行這 一工作,使用寄存器描述器來(lái)確定哪些名字的 當(dāng)前值仍保留在寄存器中,使用地址描述器來(lái) 確定其中哪些名字的當(dāng)前值還不在它的存儲(chǔ)單 元里,使用活躍變量信息來(lái)確定是否需要存儲(chǔ) 其當(dāng)前值。 35 實(shí)現(xiàn)函數(shù) getreg( i: x:= y op z) 簡(jiǎn)單方法 : ( 1) y的值是在一個(gè)寄存器中,且該寄存器 不保留其它任何名字的值,并且在執(zhí)行 x:= y op z以后 y為“非活躍”“無(wú)下次引 用”,那么就返回 y的寄存器作為 L,并更 新 y的地祉描述器以表示 y已不在 L。 ( 2)如果( 1)失敗,則當(dāng)有空寄存器時(shí) ,就 返回一個(gè)這樣的寄存器 。 36 ( 3) 如果( 2)失敗,若 x在該基本塊中有 一個(gè)下次引用,或者 op是一個(gè)需要寄 存器的算符,則找一個(gè)已被占用的寄存 器 R。 如果 R的值尚未在存儲(chǔ)單元中,則 將 R的值存放到一個(gè)單元 M中,并且更新 地址描述器為 M。 如果 R同時(shí)保存了幾個(gè) 變量的值,則對(duì)每個(gè)需要存儲(chǔ)的變量值 都應(yīng)生成一條 MOV指令。 ( 4)如果 x在該基本塊中不再被引用,或者 沒(méi)有找到合適的被占用的寄存器,則選 擇 x的存儲(chǔ)單元作為 L。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1