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

正文內容

第九章代碼生成-資料下載頁

2025-10-08 12:39本頁面

【導讀】一個簡單的代碼生成算法。涉及存儲管理,指令選擇,寄存器分配??芍囟ㄎ荒繕四K。允許程序模塊分別編譯。免去編譯器重復匯編器的工作。從教學角度,增加可讀性。指令系統(tǒng)的一致性和完備性是重要的因素。若不考慮目標程序的效率,指令的選擇是直截。MOVy,R0/*把y裝入寄存器R0*/. MOVR0,x/*把R0存入x中*/. 逐個語句地產生代碼,常常得到低質量的代碼。某種計算次序可能會比其它次序需要較少的。選擇最佳次序是一個NP完全問題。四字節(jié)組成一個字,有n個通用寄存器。再用有向邊表示基本塊之間的控制流信息,首先確定所有的入口語句。能由條件轉移語句或無條件轉移語句轉到的語句。兩個基本塊計算一組同樣的表達式。這些表達式的值分別代表同樣的活躍名字的值。有很多等價變換可用于基本塊。公共子表達式刪除。所有結點是強連通的。內循環(huán)不含其它循環(huán)。對每個基本塊從最后一個語句反向掃描到第。利用下次引用信息,可以壓縮臨時變量需要

  

【正文】 ? 否則 , 如果 x在基本塊中不再引用 , 或者找不到適當的被占用寄存器 , 則選擇 x的內存單元作為 L。 29 一個簡單的代碼生成器 賦值語句 d := (a ? b) + (a ?c) + (a ? c) 編譯產生的三地址語句序列為: t1 := a ? b t2 := a ? c t3 := t1 + t2 d := t3 + t2 一個簡單的代碼生成器 語 句 生成的代碼 寄存器描述符 名字地址描述符 寄存器空 t1 := a ? b MOV a, R0 SUB b, R0 R0含 t1 t1在 R0中 t2 := a ? c MOV a, R1 SUB c, R1 R0含 t1 R1含 t2 t1在 R0中 t2在 R1中 t3 := t1+ t2 ADD R1,R0 R0含 t3 R1含 t2 t3在 R0中 t2在 R1中 d := t3 + t2 ADD R1,R0 R0含 d d在 R0中 MOV R0, d d在 R0和內存中 31 一個簡單的代碼生成器 前三條指令可以修改 , 使執(zhí)行代價降低 MOV a, R0 MOV a, R0 SUB b, R0 MOV R0, R1 MOV a, R1 SUB b, R0 SUB c, R1 SUB c, R1 . . . . . . 32 一個簡單的代碼生成器 為變址和指針語句產生代碼 變址與指針運算的三地址語句的處理和二元算符的處理相同 33 一個簡單的代碼生成器 條件語句 實現(xiàn)條件轉移有兩種方式 ? 根據寄存器的值是否為下面六個條件之一進行分支:負 、 零 、 正 、 非負 、 非零和非正 ? 用條件碼來表示計算的結果或裝入寄存器的值是負 、 零還是正 34 一個簡單的代碼生成器 根據寄存器的值是否為下面六個條件之一進行 分支:負、零、正、非負、非零和非正 例如: if x y goto z ? 把 x減 y的值存入寄存器 R, ? 如果 R的值為負,則跳到 z 35 一個簡單的代碼生成器 用條件碼的例子 if x y goto z x := y + z 的實現(xiàn): if x 0 goto z CMP x, y 的實現(xiàn): CJ z MOV y, R0 ADD z, R0 MOV R0, x CJ z 36 本 章 要 點 ? 代碼生成器設計中的主要問題:存儲管理 、計算次序的選擇 、 寄存器的分配 、 指令的選擇等 。 ? 目標機器幾種常用的地址模式和一些常用的指令 。 ? 基本塊和程序流圖 。 ? 簡單的代碼生成算法 。
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1