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 展开字节数量。