解析objdump输出
我想知道这里有没有人写过或者在用一个脚本,可以解析objdump
的输出,并从中提取操作码?我自己有一个非常简单的实现,但我在寻找更好的方法。
我在这个脚本中遇到的问题就是它只是做了简单的字符串解析;这更像是一个工具脚本,所以我没有为它写测试。我在想,是否可以通过写一个定制的解析器或者一个简单但高效的正则表达式来实现同样的功能。
这个问题是为了学习,以便下次我能更好地处理类似的问题。
我对实现的具体细节不太在意(无论是shell、ruby、python、perl,什么都可以)。其实代码并不是最重要的,我只是想要一些关于你们会怎么做的提示。
2 个回答
1
最好的办法是从源代码编译objdump,并制作一个用Python或其他语言写的swig包装器,这样可以直接获取输出。你也可以通过解析字符串来实现,但这样往往会出问题(可以理解为实现得不好)。当然,正确地解析字符串是完全可以做到的……我有一个工具就是依赖这个方法的。
3
抱歉,如果这不是你想要的,但你粘贴的内容已经不再可用了。
这里有个小提示:输出的不同部分是用制表符(tab)来分开的。
' 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']