我注意到人们对Python反汇编器(如dis模块)有很大的兴趣。
然而,令人惊讶的是,很难找到这些反汇编程序通常用于工业/学术界的用途。除了满足好奇心(完全合理的努力!)或者编写Python实现--它们有什么共同的用途吗?
发布于 2013-09-06 17:24:41
除了好奇或研究Python实现的细节之外,Python字节码反汇编程序没有什么通用用途。这类似于大多数C程序员从来不需要看汇编程序,即使他们正在编译C代码到汇编程序,并使用像gdb这样的调试器。在Python的例子中,pdb (以及追溯等等)都很好地隐藏了字节码,不让普通程序员看到。
当然,了解它也是很有趣的。这是一个很好地了解Python如何工作的方法:-)
发布于 2013-09-06 19:44:15
对于disassmblers来说,有一个实际的用途,尽管我只是为了完整性而对这种情况进行了讨论:当您在优化代码所在的位置时,您想要检查以不同的方式编写代码是否可以使其更快。这仅适用于速度非常重要的代码。您通常不需要担心这种低级别的优化。
例如,CPython编译器优化只包含文字的表达式,在编译时将类似'foo' + 'bar'的内容转换为'foobar'。其他Python实现可能与此不同,因此检查编译器是否对其进行优化的最佳方法是使用反汇编程序:
>>> import dis
>>> def f():
... return 'foo'+'bar', 3*100, 'spam'*2
...
>>> dis.dis(f)
2 0 LOAD_CONST 9 (('foobar', 300, 'spamspam'))
3 RETURN_VALUE发布于 2014-10-22 19:07:49
如果您想在机器语言程序中查找一行代码,例如导致令人讨厌的弹出或恶意软件的代码,反汇编程序可能会帮助您找到有毒代码。
此外,正如Flornquake所说,由Python等高级语言组装的程序有时效率不高。如果您需要一个高速程序,比如说读取来自外部设备的快速数据,您很可能需要进入组装的代码并调整它以获得最大的速度。例如,将20的音乐信号数字化。
https://stackoverflow.com/questions/18647897
复制相似问题