0

我打算了解解释器如何使用字节码并执行它。如果我们以 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        

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

4

1 回答 1

2

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

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

于 2013-07-29T14:27:12.500 回答