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

正文內(nèi)容

編譯原理之代碼生成(已修改)

2025-05-29 04:33 本頁面
 

【正文】 第八章 代碼生成 湖南大學計算機與通信學院(軟件學院) 代碼生成器的位置 ?根據(jù)中間表示生成代碼 ?代碼生成器之前可能有一個優(yōu)化組件 ?代碼生成器的三個任務 ? 指令選擇:選擇適當?shù)闹噶顚崿F(xiàn) IR語句 ? 寄存器分配和指派:把哪個值放在哪個寄存器中 ? 指令排序:按照什么順序安排指令執(zhí)行 主要內(nèi)容 ?代碼生成器設計中的問題 ?目標機模型 ?靜態(tài) /棧式數(shù)據(jù)區(qū)分配 ?基本塊相關的代碼生成 ?簡單的代碼生成算法 ?窺孔優(yōu)化 ?設計目標: ? 生成代碼的正確性(最重要) ? 易于實現(xiàn)、測試和維護 ?輸入 ?輸出 ?指令選擇 ?寄存器分配 ?計算順序 代碼生成器設計中的問題 ?輸入 ? 前端生成的源代碼的 IR(中間表示形式)及符號表信息 ? 中間表示形式的選擇 ? 四元式、三元式、字節(jié)代碼、堆棧機代碼、后綴表示、抽象語法樹、 DAG圖、 … ?輸出 ? RISC、 CISC; ? 可重定向代碼、匯編語言 代碼生成器設計中的問題 ?指令選擇 ?代碼生成器將中間表示形式映射為目標機代碼 ?映射的復雜性由下列因素決定: ?IR的層次 ? 高:用代碼模板翻譯,但代碼質(zhì)量不高,需優(yōu)化 ? 低:利用低層次細節(jié)生成更高效的代碼 ?指令集體系結構本身的特性 ?期望的目標代碼質(zhì)量 代碼生成器設計中的問題 ?指令選擇 ?映射的復雜性由下列因素決定: ?IR的層次 ?指令集體系結構本身的特性 ? 指令的統(tǒng)一性、完整性 ? 指令速度和機器慣用語 (idioms) ?期望的目標代碼質(zhì)量 代碼生成器設計中的問題 ?指令選擇 ?映射的復雜性由下列因素決定: ?IR的層次 ?指令集體系結構本身的特性 ?期望的目標代碼質(zhì)量 ? 同一 IR程序可用不同代碼序列實現(xiàn),它們的代價不同 ?示例: a=a+1可實現(xiàn)為兩種 ?INC a ?LD R0,a ?ADD R0,R0,1 ?ST a, R0 目標機模型 ?本書使用三地址機器模型,指令如下: ? 加載 ? LD dst, addr;把地址 addr中的內(nèi)容加載到 dst所指寄存器。 addr:內(nèi)存地址 /寄存器 ? 保存 ? ST x, r;把寄存器 r中的內(nèi)容保存到 x中。 ? 計算 ? OP dst, src1, src2;把 src1和 scr2中的值運算后將結果存放到 dst中。 ? 無條件跳轉(zhuǎn) ? BR L;控制流轉(zhuǎn)向標號 L的指令 ? 條件跳轉(zhuǎn) ? Bcond r, L;對 r中的值進行測試,如果為真則轉(zhuǎn)向 L。 尋址模式 ?變量 x:指向分配 x的內(nèi)存位置 ?a(r):地址是 a的左值加上 r中的值 (可類比一維數(shù)組方便記憶) ?constant(r):寄存器中內(nèi)容加上前面的常數(shù)即其地址; (可類比一維數(shù)組方便記憶) ?*r:寄存器 r的內(nèi)容為其地址 ?*constant(r): r中內(nèi)容加上常量的和所指地址中存放的值為其地址 (可類比一維數(shù)組方便記憶) ?常量 constant56 例子 ?x=yz ? LD R1, y //R1=y ? LD R2, z //R2=x ? SUB R1, R1, R2 //R1=R1R2 ? ST x, R1 //x=R1 ?b=a[i] ? LR R1, i //R1=i ? MUL R1, R1, 8 //R1=R1*8 ? LD R2, a(R1) //R2=contents(a+contents(R1)) ? ST b, R2 //b = R2 程序及指令代價 ?不同的目的有不同的度量 ? 最短編譯時間、目標程序大小、運行時間、能耗 ?不可判定一個目標程序是否最優(yōu) ?指令代價=指令固定代價 (設為 1)+運算分量尋址模式代價,例: ? LD R0, R1;代價為 1 ? LD R0, M;代價是 2 ? LD R1, *100(R2);代價為 2 常數(shù)和內(nèi)存地址增加代價 1, 寄存器增加代價為 0。 目標代碼中的地址 ? Q:如何將 IR中的名字轉(zhuǎn)換成目標代碼中的地址? A:程序運行時環(huán)境劃分為 4個區(qū)域:代碼區(qū) Code、靜態(tài)區(qū) Static、棧區(qū) Stack和堆區(qū) Heap。 不同區(qū)域中的名字采用不同尋址方式。 ?如何為過程調(diào)用和返回生成代碼 ? 靜態(tài)分配 ? 棧式分配 活動記錄靜態(tài)分配 ?每個過程 靜態(tài) 地分配一個數(shù)據(jù)區(qū)域,開始位置用 staticAr
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1