做者:snsn1984 學習
從接觸LLVM編譯器到如今,也有多半年時間了,在這多半年的時間裏,也花了很多精力在上面。如今回過頭來總結一下在LLVM的學習過程當中的一些感悟。(注:這裏對LLVM的學習,不是指的是學習LLVM的使用,而是主要針對基於LLVM實現編譯功能。) .net
一、 在開始學習LLVM以前,要有一個內心準備。由於在接下來的學習過程當中,會是比較艱難的一個過程,也是一個長期的過程,並且隨着學習的深刻,會愈來愈難。 不要指望於短期就能夠把LLVM整個搞明白,除非你是個天才。因此在這個長期的過程當中,堅持就是第一重要的,同時儘可能讓本身保持對LLVM的興趣,這會 讓中間的過程變得不那麼痛苦。
二、編譯原理的基礎知識必定要紮實,若是不紮實的話,就在學習LLVM的過程當中找補回來。因 爲編譯原理的知識都是基礎中的基礎,若是那些知識都弄不太明白的話,分析LLVM的源碼和流程、以及修改LLVM源碼,就成了一個美麗的扯。因此每次在論 壇上看到在校的大學生說那門課沒用,這門課沒用的時候,我內心就笑了,只是暫時沒用到而已。(我當年也是那樣的。)
三、文檔和源碼要經 常的讀,反覆的讀,並且在讀的過程當中要去想,爲何要這樣作。凡事問個爲何,這在學習的過程當中只有好處,沒有壞處。任何一個文檔,任何一段代碼,都有着 它特殊的含義,爲何須要它的存在?它爲何要這麼實現?都是有它的道理的,若是能發現了這些的道理,那纔算是真正讀了內涵。
四、要去動手寫。針對LLVM,在學習的過程當中,要不斷的去寫,寫Pass,寫LLVM Project,寫Backend,寫Frontend等,在寫的過程當中,不斷的加深所掌握的知識,不斷的去學習新的知識。
五、 要善於提問,善於交流,善於總結。提問的話,能夠在LLVM的郵件列表裏,LLVM的郵件列表是至關的活躍的,是一個很好的學習交流的地方。總結的話,最 好是要多寫,只有在寫的過程當中,才能發現哪些東西是真的明白了,那些是還沒搞清楚的。由於搞不清楚的,你很難用文字描述清楚的。
最後,但願全部的學習LLVM的同窗最後都能堅持到底,成爲大牛。 ------------------------------------------------------------------------------------ 轉載請註明出處 ----------------------------------------------------------------------------------------------------------------