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

正文內(nèi)容

編譯原理之代碼生成-展示頁

2025-05-25 04:33本頁面
  

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