3

我想知道这里是否有人编写/使用了解析输出objdump并从中提取操作码的脚本?我有一个非常非常简单的实现,但我正在寻找更好的东西。

我面临的这个脚本的问题很简单,它只进行简单的字符串解析;这更像是一个实用程序脚本,这就是我没有为这些编写测试的原因。我想知道是否可以通过编写定制的解析器或简单而有效的正则表达式来完成同样的工作。

此查询是出于学习的目的,以便我下次可以(希望)以更好的方式解决此类问题。

我不介意实现的细节(shell、ruby、python、perl;任何事情都可以)。代码甚至没有那么重要,真的,我想要一些关于你将如何做的提示。

4

2 回答 2

3

如果这不是您想要的,我很抱歉,但您的粘贴不再可用。

这是一个快速提示。输出的不同部分由制表符分隔。

'  402000:\t14 43                \tadc    $0x43,%al\n'

这应该让你开始:

>>> r
'  402000:\t14 43                \tadc    $0x43,%al\n'
>>> r = r.strip()
>>> r
'402000:\t14 43                \tadc    $0x43,%al'
>>> r = r.split('\t')
>>> r
['402000:', '14 43                ', 'adc    $0x43,%al']
>>> r[1] = r[1].strip()
>>> r
['402000:', '14 43', 'adc    $0x43,%al']
于 2012-06-23T03:48:51.543 回答
1

最好的解决方案是从源代码构建 objdump 并制作一个直接获取输出的 python 或其他语言 swig 包装器。您可以通过字符串解析来做到这一点,但这通常是错误的(读作实施不佳)。绝对可以正确地进行字符串解析...我有一个依赖于此的实用程序。

于 2011-09-02T12:38:58.047 回答