最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C語言代碼重構(gòu)器設(shè)計(jì)

2023-02-26 20:47 作者:GC_CH  | 我要投稿


前言

????代碼重構(gòu)的目的是讓代碼更容易被人看懂. 反編譯過程中需要大量的代碼重構(gòu). 隨著可執(zhí)行程序的體積增大, 反編譯的工作量成指數(shù)趨勢(shì)增長(zhǎng). 通常, 可手動(dòng)反編譯的程序體積在 1 MB 以下.

????所以, 我打算實(shí)現(xiàn)一個(gè)代碼重構(gòu)器. 技術(shù)上應(yīng)該是沒問題的, 但是能不能實(shí)現(xiàn)還取決于時(shí)間, 經(jīng)濟(jì)(沒找到工作)等其他因素. 如果實(shí)現(xiàn)不了, 也可以在此提供一個(gè)思路.

????主要需要編譯原理的知識(shí).

目標(biāo)

????輸入一個(gè)符合C99標(biāo)準(zhǔn)的C語言函數(shù)的代碼文本, 輸出一個(gè)與該函數(shù)等價(jià)并且更易懂的函數(shù)文本.

????等價(jià)是指 : 對(duì)于任何參數(shù), 輸出的運(yùn)行函數(shù)的結(jié)果都與輸入函數(shù)的運(yùn)行結(jié)果相等, 包括副作用(也就是打印字符串這些不影響結(jié)果的操作).

????更易懂是指 : (1) 代碼量盡可能減少(特殊情況也可以增大代碼量提高可讀性) ; (2) 執(zhí)行流程更加簡(jiǎn)單, 盡可能去除goto語句; (3) 塊的深度盡可能地低, 也就是 {} 的嵌套程度盡可能低.

模塊

1. 詞法分析模塊

????將輸入的函數(shù)文本轉(zhuǎn)為成單詞序列, 所謂單詞, 就是英語中的單詞的意思. 比如, 以字母或下劃線開頭的任意多個(gè)的字母, 數(shù)字或下劃線可以構(gòu)成一個(gè)標(biāo)識(shí)符, 標(biāo)識(shí)符就是一類單詞. 單詞通常分為標(biāo)識(shí)符, 關(guān)鍵字, 分隔符, 運(yùn)算符四大類.

2. 語法分析模塊

????將詞法分析模塊輸出的單詞序列組合成語句序列. 只有知道是什么語句, 才能分析代碼的語義(要做什么).

????比如?c = a + b; 這個(gè)語句的語法是 標(biāo)識(shí)符 = 標(biāo)識(shí)符 + 標(biāo)識(shí)符, 語義是將 = 右邊的兩個(gè)標(biāo)識(shí)符的值相加, 結(jié)果賦值給 = 左邊的標(biāo)識(shí)符.

3. 數(shù)據(jù)庫模塊

????用于保存管理分析出來的數(shù)據(jù).

????比如要保存某個(gè)變量的名字, 定義位置, 使用位置等信息.?

4. 代碼優(yōu)化模塊

????分析數(shù)據(jù)庫中的數(shù)據(jù), 執(zhí)行代碼優(yōu)化.

????也就是判斷是否符合某個(gè)模式, 如果符合, 就執(zhí)行相應(yīng)的優(yōu)化策略來改寫函數(shù)代碼.

????比如 : 分析出來某個(gè)變量沒有使用到, 那么就執(zhí)行去掉這個(gè)變量的策略.


C語言代碼重構(gòu)器設(shè)計(jì)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阿尔山市| 昌宁县| 沂南县| 洛川县| 招远市| 长武县| 新竹市| 潜山县| 民乐县| 新巴尔虎左旗| 鹰潭市| 奉贤区| 同德县| 长春市| 江达县| 右玉县| 江北区| 通州市| 松原市| 察隅县| 沾益县| 昌图县| 兴义市| 洞头县| 鹤山市| 镇宁| 海安县| 永定县| 建始县| 田东县| 兰州市| 漯河市| 望谟县| 辽源市| 靖宇县| 冀州市| 三门县| 克什克腾旗| 清徐县| 渑池县| 南靖县|