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

閱讀排行榜
評論排行榜