国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
赤壁市| 皮山县| 中牟县| 西乌| 辉南县| 昭通市| 衡水市| 南召县| 郧西县| 金平| 南岸区| 宝清县| 荃湾区| 都江堰市| 宜章县| 兴安县| 新邵县| 社会| 土默特左旗| 尉氏县| 曲麻莱县| 瓦房店市| 大同县| 天津市| 武汉市| 阿克| 桂阳县| 洪雅县| 吉水县| 桑日县| 莱阳市| 翁源县| 德化县| 陵川县| 宜城市| 金昌市| 中阳县| 龙山县| 元朗区| 宁明县| 克什克腾旗|