解析objdump输出

3
我想知道是否有人写过/使用过一个脚本,可以解析objdump的输出并从中提取操作码?我有一个非常简单的实现,但我正在寻找更好的解决方案。这个脚本面临的问题就是它只做了一些字符串解析;这更像是一个实用程序脚本,这就是为什么我没有为其编写测试用例的原因。我想知道是否可以通过编写自定义解析器或一个简单而高效的正则表达式来完成相同的事情。这个问题是为了学习目的,以便下次能够更好地解决这样的问题。我不介意具体的实现(shell、ruby、python、perl;任何都可以)。实际上,代码并不那么重要,我只需要一些关于如何解决此类问题的提示即可。

4
你应该更具体地说明你所做的事情,它与你的期望不符的具体原因以及你所期望的结果。 - Dennis Williamson
你可以添加一些示例输入和期望输出吗? - TryPyPy
1
该链接已经失效。 - Andrew Grimm
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']

1
最好的解决方案是从源代码构建objdump,并制作一个Python或其他语言的SWIG包装器,直接获取输出。虽然您可以通过字符串解析实现它,但往往存在错误(读作为实现不当)。确实有可能正确地执行字符串解析...我有一个依赖于它的实用程序。

实用程序的名称是什么? - Nagmat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接