LLVM 怎樣入門和上手?
01-12
感覺新出的編程語言不小的一部分都和 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 |