做者:snsn1984
html
在介紹LLVM IR以前,咱們須要先了解下LLVM的結構。傳統的靜態編譯器分爲三個階段:前端、優化和後端。 前端
LLVM IR是LLVM優化和進行代碼生成的關鍵。根據可讀的IR,咱們能夠知道再最終生成目標代碼以前,咱們已經生成了什麼樣的代碼。並且根據IR,咱們能夠選擇使用不一樣的後端而生成不一樣的可執行代碼。同時,由於使用了統一的IR,因此咱們能夠重用LLVM的優化功能,即便咱們使用的是本身設計的編程語言。 編程
若是想直觀的看下llvm的IR究竟是什麼樣的,能夠先寫一個helloworld的程序,文件名字叫作hello.c。根據下列文檔的步驟配置llvm: 後端
http://clang.llvm.org/get_started.html 編程語言
而後根據文檔的內容使用下列命令能夠獲得二進制的.bc文件: 編輯器
clang -emit-llvm -c hello.c -o hello.bc 優化
而後使用下列命令能夠獲得對應的hello.ll文件,這個文件是可讀的,能夠經過文本編輯器打開。 spa
llvm-dis hello.bc .net
這樣咱們就能夠直觀的獲得IR的兩種格式了,至於在內存中的那種格式,咱們是沒法經過文件的形式獲得的。 設計
咱們通常都是查看.ll格式,由於這自己就是給人閱讀的IR格式。