【问题标题】:How to see the assembly code of a Python file? [closed]如何查看 Python 文件的汇编代码? [关闭]
【发布时间】:2015-02-28 00:43:24
【问题描述】:

出于好奇,我想查看与 .py 文件的代码对应的汇编指令。您可以提出任何值得信赖的解决方案吗?

【问题讨论】:

  • 你说的是 Python 字节码还是主机 CPU?
  • @Andrew 关于主机 CPU!
  • 我不确定您是否了解这里的工作原理。 Python 被编译为由 Python VM 执行的字节码。它可能会或可能不会被 JITted 到本机机器代码。
  • 定义可信赖;您的意思是您担心某些方法会在所提供的说明上对您撒谎?

标签: python disassembly


【解决方案1】:

dis module 反汇编代码对象(从具有 __dict__ 命名空间的函数、类和对象中提取代码对象)。

这意味着您可以使用它来拆卸整个模块:

import dis

dis.dis(dis)

尽管这并不像您想象的那么有趣,因为大多数模块都包含多个函数和类,从而导致大量输出。

我通常专注于我感兴趣的特定方面的较小功能;就像为链式比较生成的字节码一样:

def f(x):
    return 1 < x ** 2 < 100

dis.dis(f)

例如。

【讨论】:

  • 不知道为什么你会被否决,OP 没有具体说明他想要什么,我认为这个答案很棒。
  • 可能有人觉得这个问题质量太差了,我不敢回答。我希望他们能说出来,这样我们就可以讨论这个问题是否可以挽救。
  • 原帖要求提供汇编代码,但dis模块显示字节码。
  • @penguin 这就是提问者所说的汇编代码的意思。用 C 编码的 Python 评估循环完全由字节码驱动。
猜你喜欢
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多