LLVM每日談之九 談LLVM的學習

從接觸LLVM編譯器到現在,也有多半年時間了,在這多半年的時間裡,也花了不少精力在上面。現在回過頭來總結一下在LLVM的學習過程中的一些感悟。(註:這裡對LLVM的學習,不是指的是學習LLVM的使用,而是主要針對基於LLVM實現編譯功能。)

1、在開始學習LLVM之前,要有一個心裡準備。因為在接下來的學習過程中,會是比較艱難的一個過程,也是一個長期的過程,而且隨著學習的深入,會越來越難。不要期望於短時間就可以把LLVM整個搞明白,除非你是個天才。所以在這個長期的過程中,堅持就是第一重要的,同時盡量讓自己保持對LLVM的興趣,這會讓中間的過程變得不那麼痛苦。

2、編譯原理的基礎知識一定要紮實,如果不紮實的話,就在學習LLVM的過程中找補回來。因為編譯原理的知識都是基礎中的基礎,如果那些知識都弄不太明白的話,分析LLVM的源碼和流程、以及修改LLVM源碼,就成了一個美麗的扯。所以每次在論壇上看到在校的大學生說那門課沒用,這門課沒用的時候,我心裡就笑了,只是暫時沒用到而已。(我當年也是那樣的。)

3、文檔和源碼要經常的讀,反覆的讀,而且在讀的過程中要去想,為什麼要這樣做。凡事問個為什麼,這在學習的過程中只有好處,沒有壞處。任何一個文檔,任何一段代碼,都有著它特殊的含義,為什麼需要它的存在?它為什麼要這麼實現?都是有它的道理的,如果能發現了這些的道理,那才算是真正讀了內涵。

4、要去動手寫。針對LLVM,在學習的過程中,要不斷的去寫,寫Pass,寫LLVM Project,寫Backend,寫Frontend等,在寫的過程中,不斷的加深所掌握的知識,不斷的去學習新的知識。

5、要善於提問,善於交流,善於總結。提問的話,可以在LLVM的郵件列表裡,LLVM的郵件列表是相當的活躍的,是一個很好的學習交流的地方。總結的話,最好是要多寫,只有在寫的過程中,才能發現哪些東西是真的明白了,那些是還沒搞清楚的。因為搞不清楚的,你很難用文字描述清楚的。

最後,希望所有的學習LLVM的同學最後都能堅持到底,成為大牛。

2013年2月23日
推薦閱讀:

TAG:LLVM | Clang | ChrisLattner |