Interpreter如何使用字节码并执行它

时间:2013-07-29 14:25:49

标签: python interpreter bytecode

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

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

1 个答案:

答案 0 :(得分:2)

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

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