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

1.4 LLVM在線工具

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

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

圖1-2 輸入代碼并選擇編程語(yǔ)言

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

圖1-3 選擇編譯器并添加編譯選項(xiàng)

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

圖1-4 配置編譯選項(xiàng)

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

圖1-5 選擇LLVM Opt Pipeline

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

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

主站蜘蛛池模板: 辽源市| 固原市| 盈江县| 沅陵县| 翁源县| 余江县| 古交市| 新营市| 景东| 拉孜县| 山西省| 广宁县| 泰宁县| 阿坝县| 弋阳县| 杭锦后旗| 隆子县| 洪湖市| 基隆市| 永福县| 乐都县| 沙湾县| 新田县| 高密市| 乐至县| 东阳市| 丹寨县| 凤冈县| 台前县| 巩义市| 丽水市| SHOW| 和静县| 天全县| 丹巴县| 茶陵县| 城口县| 浦县| 叙永县| 鹤庆县| 荆州市|