五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
郴州市| 克什克腾旗| 三原县| 道真| 新津县| 龙陵县| 德江县| 辽源市| 英吉沙县| 侯马市| 遂平县| 湟源县| 临安市| 肥城市| 保靖县| 安塞县| 谢通门县| 从江县| 河源市| 隆安县| 东至县| 泉州市| 大渡口区| 湄潭县| 屏边| 耒阳市| 法库县| 尉犁县| 资兴市| 定兴县| 喜德县| 将乐县| 浦城县| 虹口区| 鄂伦春自治旗| 红河县| 龙山县| 元阳县| 织金县| 鸡泽县| 永春县|