llvm-bcanalyzer - LLVM 位元碼分析器¶
概要¶
llvm-bcanalyzer [選項] [檔案名稱]
描述¶
llvm-bcanalyzer 命令是一個用於分析位元碼檔案的小工具。此工具讀取位元碼檔案(例如使用 llvm-as 工具產生的檔案),並產生關於位元碼檔案內容的統計報告。此工具也可以傾印低階但人類可讀的位元碼檔案版本。除了直接處理位元碼檔案格式的人員之外,此工具可能沒有太大的興趣或實用性。大多數 LLVM 使用者可以忽略此工具。
如果省略 filename 或為 -
,則 llvm-bcanalyzer 從標準輸入讀取其輸入。這對於將此工具合併到管線中非常有用。輸出會寫入標準輸出。
選項¶
- --dump¶
使 llvm-bcanalyzer 以人類可讀的格式傾印位元碼。此格式與 LLVM 組語顯著不同,並提供關於位元碼檔案編碼的詳細資訊。
- --help¶
列印命令列選項的摘要。
結束狀態¶
如果 llvm-bcanalyzer 成功,它將以 0 結束。否則,如果發生錯誤,它將以非零值結束,通常為 1。
摘要輸出定義¶
以下項目始終由 llvm-bcanalyzer 列印。它們構成摘要輸出。
模組的位元碼分析
這僅提供正在產生位元碼分析的模組名稱。
位元碼版本號
分析器讀取的檔案的位元碼版本(不是 LLVM 版本)。
檔案大小
整個位元碼檔案的大小,以位元組為單位。
模組位元組
模組區塊的大小,以位元組為單位。百分比相對於檔案大小。
函數位元組
所有函數區塊的大小,以位元組為單位。百分比相對於檔案大小。
全域型別位元組
全域型別池的大小,以位元組為單位。百分比相對於檔案大小。這是位元碼檔案中所有型別定義的大小。
常數池位元組
常數池區塊的大小,以位元組為單位。百分比相對於檔案大小。
模組全域變數位元組
全域變數定義及其初始設定式的大小,以位元組為單位。百分比相對於檔案大小。
指令列表位元組
所有函數中所有指令列表的大小,以位元組為單位。百分比相對於檔案大小。請注意,此值也包含在函數位元組中。
壓縮表位元組
所有函數中所有壓縮表的大小,以位元組為單位。百分比相對於檔案大小。請注意,此值也包含在函數位元組中。
符號表位元組
所有函數中所有符號表的大小,以位元組為單位。百分比相對於檔案大小。請注意,此值也包含在函數位元組中。
相依程式庫位元組
模組中相依程式庫列表的大小,以位元組為單位。百分比相對於檔案大小。請注意,此值也包含在模組全域變數位元組中。
位元碼區塊數量
位元碼檔案中任何種類的區塊總數。
函數數量
位元碼檔案中函數定義的總數。
型別數量
全域型別池中定義的型別總數。
常數數量
常數池中定義的常數總數(任何型別)。
基本區塊數量
位元碼檔案中所有函數中定義的基本區塊總數。
指令數量
位元碼檔案中所有函數中定義的指令總數。
長指令數量
位元碼檔案中所有函數中定義的長指令總數。長指令是指那些佔用超過 4 個位元組的指令。通常,長指令是具有多個索引的 GetElementPtr、PHI 節點以及對具有大量引數的函數的呼叫。
運算元數量
位元碼檔案中所有指令中使用的運算元總數。
壓縮表數量
位元碼檔案中所有函數中的壓縮表總數。
符號表數量
位元碼檔案中所有函數中的符號表總數。
相依程式庫數量
在位元碼檔案中找到的相依程式庫總數。
總指令大小
位元碼檔案中所有函數中指令的總大小。
平均指令大小
位元碼檔案中所有函數中每個指令的平均位元組數。此值是通過將總指令大小除以指令數量來計算的。
最大型別槽號
型別槽號使用的最大值。較大的槽號值需要更多位元組來編碼。
最大值槽號
值槽號使用的最大值。較大的槽號值需要更多位元組來編碼。
每個值的位元組數
任何型別的值定義的平均大小(任何型別)。這是通過將檔案大小除以任何型別的值總數來計算的。
每個全域變數的位元組數
全域變數定義(常數和全域變數)的平均大小。
每個函數的位元組數
每個函數定義的平均位元組數。這是通過將函數位元組除以函數數量來計算的。
VBR 32 位元整數的數量
使用可變位元率編碼方案編碼的 32 位元整數總數。
VBR 64 位元整數的數量
使用可變位元率編碼方案編碼的 64 位元整數總數。
VBR 壓縮位元組的數量
使用可變位元率編碼方案的 32 位元和 64 位元整數消耗的總位元組數。
VBR 擴展位元組的數量
如果沒有使用可變位元率編碼方案壓縮,則 32 位元和 64 位元整數將消耗的總位元組數。
使用 VBR 節省的位元組數
通過使用可變位元率編碼方案節省的總位元組數。百分比相對於 VBR 擴展位元組的數量。
詳細輸出定義¶
只有在未給定 -nodetails 選項時,才會出現以下定義。詳細輸出提供每個函數的額外資訊。
型別
函數的型別簽名。
位元組大小
函數區塊中的總位元組數。
基本區塊
函數定義的基本區塊數量。
指令
函數定義的指令數量。
長指令
函數中使用長指令格式的指令數量。
運算元
函數中所有指令使用的運算元數量。
指令大小
函數中指令消耗的位元組數。
平均指令大小
函數中指令消耗的平均位元組數。此值是通過將指令大小除以指令數量來計算的。
每個指令的位元組數
函數每個指令使用的平均位元組數。此值是通過將位元組大小除以指令數量來計算的。請注意,這與平均指令大小不同。它計算相對於總函數大小的數字,而不僅僅是指令列表的大小。
VBR 32 位元整數的數量
在此函數中找到的 32 位元整數總數(用於任何用途)。
VBR 64 位元整數的數量
在此函數中找到的 64 位元整數總數(用於任何用途)。
VBR 壓縮位元組的數量
在此函數中,使用可變位元率編碼方案的 32 位元和 64 位元整數消耗的總位元組數。
VBR 擴展位元組的數量
如果沒有使用可變位元率編碼方案壓縮,則在此函數中,32 位元和 64 位元整數將消耗的總位元組數。
使用 VBR 節省的位元組數
通過在此函數中使用可變位元率編碼方案節省的總位元組數。百分比相對於 VBR 擴展位元組的數量。