官术网_书友最值得收藏!

1.4 LLVM在線工具

如果讀者不想構建LLVM,也可以使用在線工具Complier Explorer(https://godbolt.org)學習LLVM各種功能和代碼變化。該在線工具可以直觀地比較優化前后的代碼變化情況,支持多種語言作為輸入,也支持LLVM IR、LLVM MIR(Machine IR)作為輸入,該工具可以選擇不同的編譯器進行編譯。

1)Compiler Explorer初始界面如圖1-2所示,可以選擇不同的編程語言。

圖1-2 輸入代碼并選擇編程語言

2)選擇不同的編譯器,并為編譯器添加不同的編譯選項,例如選擇Clang版本,添加命令行參數-emit-llvm -S用于生成LLVM IR,如圖1-3所示。

圖1-3 選擇編譯器并添加編譯選項

3)本書主要關注代碼生成,對應的命令行入口是llc。llc使用LLVM IR作為輸入,如果要生成BPF后端代碼,可以在編譯選項中填入-march=bpf,如圖1-4所示。

圖1-4 配置編譯選項

選擇Add new視圖下的LLVM Opt Pipeline選項(見圖1-5),可以展示Clang編譯過程使用的Pass(參見附錄C)。

圖1-5 選擇LLVM Opt Pipeline

得到的結果如圖1-6所示,在LLVM Opt Pipeline視圖中,第一列是所有Pass,右側兩列是某一Pass的輸入和輸出。如果IR經過某個Pass處理后發生變化,在LLVM Opt Pipeline中使用高亮的綠色表示變化,右側兩列會提示變化的情況。(因印刷緣故,綠色、粉色都變成淺灰色,請讀者注意。而在實際網頁中,粉底色表示刪除、綠色表示添加。)

圖1-6 輸出所有涉及的Pass

主站蜘蛛池模板: 读书| 石狮市| 汉阴县| 安塞县| 嘉义县| 临西县| 湘潭县| 阳江市| 定安县| 黎平县| 台北市| 英山县| 治县。| 泸溪县| 郴州市| 齐河县| 永城市| 漳浦县| 左权县| 镇康县| 合川市| 北票市| 宜良县| 繁昌县| 天祝| 廉江市| 丰都县| 五常市| 渭南市| 邵武市| 隆安县| 应用必备| 红安县| 天水市| 舒兰市| 武冈市| 同心县| 五台县| 宜黄县| 昭通市| 海原县|