【问题标题】:How Interpreter consumes Bytecodes and executes it [closed]解释器如何使用字节码并执行它[关闭]
【发布时间】:2013-07-29 09:28:08
【问题描述】:

我打算了解解释器如何使用字节码并执行它。如果我们以 Python 为例,它会生成字节码,然后对其进行解释。我很想知道解释器如何使用字节码指令集并执行它们。

例如:

>>> def test():
...  print " hello"
... 
>>> dis.dis(test)
  2           0 LOAD_CONST               1 (' hello')
              3 PRINT_ITEM          
              4 PRINT_NEWLINE       
              5 LOAD_CONST               0 (None)
              8 RETURN_VALUE        

现在,我将如何解释并执行此字节码指令?

【问题讨论】:

    标签: python interpreter bytecode


    【解决方案1】:

    Python 使用评估循环来执行字节码。请参阅 ceval.c 了解实现(在 C 中)。

    如果您想自己从 Python 中解释字节码指令,您需要深入了解每条指令应该做什么以及在哪里可以找到控制其执行的数据结构。例如,LOAD_CONST 1 这里从附加到函数的代码对象中加载索引 1 处的常量并将其放入堆栈,PRINT_ITEM 获取堆栈顶部的值,将其转换为字符串并将其写入sys.stdout.

    【讨论】:

    • 其实我只是想学习如何创建一个解释器来执行字节码指令。它可能不仅限于python。有什么资源可以帮助我继续下去吗?
    • @Rahul:这个主题方式太宽泛了,无法在此介绍,我也不知道有任何资源或教程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2021-04-14
    • 2013-07-29
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多