llvm-bcanalyzer - LLVM 位元碼分析器

語法

llvm-bcanalyzer [選項] [檔名]

說明

llvm-bcanalyzer 命令是一個用於分析位元碼檔案的小型工具。該工具會讀取一個位元碼檔案(例如使用 llvm-as 工具產生的檔案),並產生有關位元碼檔案內容的統計報告。該工具還可以轉儲位元碼檔案的低階但人類可讀的版本。除了直接使用位元碼檔案格式的人員之外,此工具可能沒有太大興趣或用途。大多數 LLVM 使用者可以忽略此工具。

如果省略 檔名 或為 -,則 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 展開後位元組數」。

另請參閱

llvm-dis(1)LLVM 位元碼檔案格式