gpt4 book ai didi

gcc - assembly 分析工具

转载 作者:行者123 更新时间:2023-12-04 04:19:25 25 4
gpt4 key购买 nike

有人对汇编文件分析工具有任何建议吗?通过-S选项时,我试图分析LLVM(或GCC)生成的ARM/Thumb-2 ASM文件。我对基本块级别的指令统计特别感兴趣,例如内存操作的数量等等。我可能最终在Python中滚动了自己的工具,但很想知道在开始之前是否有任何现有工具。

更新:我做了一些搜索,找到了一个很好的反汇编工具/十六进制编辑器/here资源,但是不幸的是,它主要集中在x86汇编上,并且不包括任何实际的汇编文件分析器。

最佳答案

您需要的是一个可以定义汇编语言语法,然后构建自定义分析器的工具。您的分析器可能很简单(“一条指令需要占用多少空间?”),也可能很复杂(“执行该指令需要花费多少个周期?” [取决于前面的指令序列以及您所使用的处理器的复杂模型)关心])。

专为此目的设计的一种就是New Jersey Machine Toolkit。它实际上是为构建代码生成器和调试器而设计的。我怀疑它会擅长“指令字节数”。尚不清楚它是否适合进行更复杂的分析。而且我相信它坚持要遵循其语法样式,而不是您的语法样式。

我们的代码不是专门为执行此操作而设计的,但通常擅长解析/分析语言
DMS Software Reengineering Toolkit

可以为DMS提供几乎任何上下文无关语言的语法描述(涵盖大多数汇编语言语法),然后可以将该语法的特定实例(汇编代码)解析为AST,以进行进一步处理。我们已经用几种组装语言完成了工作,包括IBM 370,摩托罗拉的8位CPU生产线和相当独特的DSP,没有麻烦。

您可以轻松地为DMS指定属性语法(基于AST的计算)。这些是对仅需要本地信息的分析进行编码的好方法,例如“这条指令有多大?”。对于更复杂的分析,您需要一个由一系列指令驱动的处理器模型。通过将这样的机器模型传递给单个指令的AST,将是应用机器模型来计算更复杂的事物(如“这条指令需要多长时间?”)的简便方法。

DMS以通用形式提供其他分析,例如控制流和数据流。您可以使用属性评估器来收集局部事实(“该指令的下一个控制项是...”,“该指令的数据流向...”),并将其馈送到流分析器以计算全局流事实( “如果我执行此指令,还有哪些其他指令可以在下游执行?”。

您必须为您的特定(汇编)语言配置DMS。它旨在针对此类任务进行配置。

是的,您可能可以使用Python编写所有代码;毕竟,它是图灵机。但是可能不那么容易。

另一个好处是:DMS愿意根据您的分析将转换应用于您的代码。因此,您也可以使用它来实现优化器。毕竟,您需要将分析指示表明优化是安全的,并将其连接到实际的优化步骤。

关于gcc - assembly 分析工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com