標籤:

LLVM 怎樣入門和上手?

感覺新出的編程語言不小的一部分都和 LLVM 關係緊密啊


如果你想實踐,結合編譯原理與LLVM的話,請跟著LLVM Tutorial一步一步做下來吧,你會收穫很多的,請猛擊:LLVM Tutorial: Table of Contents


@史寧寧,本來不想吐槽的,那個csdn的專欄簡直是扯淡,浪費人時間,會看官網,一看就知道的東西,還要講這麼多天.

@李斌,這個專欄也是浪費時間,爛尾的.

@藍色,加上github上的某源碼工程,自己搜,最多星星的那個.比tutorial上的代碼更好,拆分成lexer和passer了.LLVM Tutorial: Table of Contents 這個tutorial看完3,就要學llvm的api,從下面的

Getting Started with the LLVM System開始吧.

開始回答這個問題,當然是看官網,源碼和作者的鏈接:

1.還有不要下官網svn的代碼,用github上的mirror,方便自己建立branch,方便自己checkout到某個commit point,然後一點點patch,感覺像放電影.不過這樣也是很坑的,我說的是時間.

Getting Started with the LLVM System原來本來就有git,我也是剛學,不好意思,本來真不想這麼狂妄的~~

2.官網的有很多文檔,沒有翻完,每篇前面都有introduction和toc,這個真不錯的.

3.作者的官網,太好了,有很多他自己寫的文檔,下載地址都在官網~~,還有就是好多undocumented的文檔.真是寶庫,不解釋.這條線最成體系吧.recommend:-)

Reference:

Chris Lattner"s Homepage

LLVM -- wiki中的reference我幾乎都點過了:-(

親,其他的鏈接看評論


http://www.aosabook.org/en/llvm.html

這是 The Architecture of Open Source Applications 一書中關於 LLVM 的章節,由 LLVM 作者 Chris Lettner 親自撰寫。是我見過最好的 LLVM 入門讀物。


其實我覺得可以跟著clang的步驟先自己走一個原型出來(就是寫各種你不知道咋處理的代碼的cpp形式,再用clang編譯看llvmir,比如lambda capture就是一個很複雜的東西,然後模仿clang),然後再看文檔,這時候很多東西你都是知道的了,看起來就會很快很有自信,心態不會崩(最後幾句是我對我未來的美好構想)。


專欄:LLVM零基礎學習

自己在CSDN寫的關於LLVM的專欄,主要關注了IR相關部分,也就是說這一系列主要是如何使用PASS。


如果想要了解如何通過C++代碼生成LLVM IR,可以看看這個 使用llc C++後端輔助LLVM IR編程


找個感興趣的地方,下斷點,然後調試,看棧回溯。


照著tutorial寫一遍就會了。比方說ocaml的binding。

當然了,ocaml的binding不是safe的,你要是沒用對的話可能會segfault。


推薦閱讀:

編譯時能否關閉clang的所有優化?我試過-O0,但是編譯成彙編之後還是自動進行了一些優化?
是否可以將不同語言編譯到LLVM IR層面鏈接?如果可以,與傳統的編譯為目標代碼鏈接有什麼不同?
libgccjit和LLVM相比,有哪些優點?
LLVM相比於JVM,有哪些技術優勢?

TAG:LLVM |