1. 不可達(dá)代碼是指無論輸入什么都不會(huì)執(zhí)行的代碼,對(duì)過程而言,即是從入口基本塊到不了(沒有路徑可達(dá))的那些基本塊;死代碼是指可達(dá)但計(jì)算了后面任何可執(zhí)行路徑都不會(huì)使用其計(jì)算結(jié)果的代碼,比如死變量和死指令
2. 不可達(dá)代碼的識(shí)別本質(zhì)是有向圖的可達(dá)性判定與傳遞閉包計(jì)算問題,一般用DFS法處理。先找到從入口基本塊不可達(dá)的基本塊,再刪除(同時(shí)改變其前驅(qū)和后繼基本塊的指向),直到找不到為止。死代碼的識(shí)別可用活躍分析或必要指令標(biāo)記法,對(duì)于活躍分析,刪除基本塊出口不活躍的變量定值,以及它所使用不活躍操作數(shù)的定值;對(duì)于標(biāo)記法,從必要指令出發(fā),根據(jù)def-use鏈和use-def鏈,不斷標(biāo)記對(duì)其操作數(shù)有貢獻(xiàn)的指令,最后刪除沒被標(biāo)記的那些指令
3. 不可達(dá)代碼和死代碼可能來源于程序員,更可能源于編譯器的其它一些優(yōu)化產(chǎn)生,刪除優(yōu)化它們能顯著減小代碼體積,對(duì)執(zhí)行速度有間接的影響,因?yàn)榭赡芨纳浦噶罡咚倬弻拥睦寐?/div>
posted on 2023-09-06 23:33
春秋十二月 閱讀(131)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Compiler
本博客所有隨筆均為原創(chuàng),因?yàn)椴欢ㄆ诰S護(hù)更新,所以轉(zhuǎn)載請(qǐng)注明出處,如有問題和建議,請(qǐng)留言或評(píng)論,發(fā)表您的寶貴意見,藉此平臺(tái)以分享交流、共同進(jìn)步。
聯(lián)系方式:微信theory-math
|
|
30 | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
常用鏈接
留言簿(74)
隨筆分類(158)
隨筆檔案(159)
文章分類(30)
關(guān)注的開源項(xiàng)目
最新隨筆
積分與排名
最新評(píng)論

閱讀排行榜
評(píng)論排行榜