LLVM學習筆記 -- LLVM
最近因為有比較多的空閒時間所以看了一些有關Linux Kernel跟OS的書以及參加了Coscup,也寫了一些Code(有C/C++, Javascript 和Python之類的code ),後來想了一想以前學習C的時候通常不會去管編譯器到底做什麼事以及如何設計一個簡單的編譯器。
所以我參考了Compilers Principles Techniques and Tools (2nd Edition) 這本書,但看了前面幾個章節發覺直接看書真的不容易理解編譯器是怎麼寫的還有裡面的原理,後來我想到在Coscup上有聽到LLVM,一開始還不知道LLVM再做什麼的然後在網路上找了一下資料來了解他能做什麼(http://zh.wikipedia.org/wiki/LLVM)。從Wiki的資料來看他利用虛擬技術來創造出編譯時期,鏈結時期,執行時期以及「閒置時期」的最佳化(資料來自Wiki)。
當然這樣看還是不太容易理解,後來就找到了LLVM官方自己寫的教學(http://llvm.org/docs/tutorial/LangImpl1.html),這個教學是教我們如何用LLVM開發一個Kaleidoscope語言,所以這個語言非常的簡單,但是用來學習基本的Compiler跟如何使用LLVM是滿夠用的。
這個教學我目前也看只看到第三章而已,看完前面三章自己是覺得LLVM也是滿有趣的東西。所以我的目標是看完第四章後,再來寫一到四章的教學文章。而另一個目標等看完所有的教學,要來寫一個專屬自己的程式語言,用想的就覺得這個Project真讓人興奮,所以寫了這一篇文章來提醒自己要動工了 XD。
所以我參考了Compilers Principles Techniques and Tools (2nd Edition) 這本書,但看了前面幾個章節發覺直接看書真的不容易理解編譯器是怎麼寫的還有裡面的原理,後來我想到在Coscup上有聽到LLVM,一開始還不知道LLVM再做什麼的然後在網路上找了一下資料來了解他能做什麼(http://zh.wikipedia.org/wiki/LLVM)。從Wiki的資料來看他利用虛擬技術來創造出編譯時期,鏈結時期,執行時期以及「閒置時期」的最佳化(資料來自Wiki)。
當然這樣看還是不太容易理解,後來就找到了LLVM官方自己寫的教學(http://llvm.org/docs/tutorial/LangImpl1.html),這個教學是教我們如何用LLVM開發一個Kaleidoscope語言,所以這個語言非常的簡單,但是用來學習基本的Compiler跟如何使用LLVM是滿夠用的。
這個教學我目前也看只看到第三章而已,看完前面三章自己是覺得LLVM也是滿有趣的東西。所以我的目標是看完第四章後,再來寫一到四章的教學文章。而另一個目標等看完所有的教學,要來寫一個專屬自己的程式語言,用想的就覺得這個Project真讓人興奮,所以寫了這一篇文章來提醒自己要動工了 XD。
留言