2013-07-29 27 views
1

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

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

回答

2

Python使用评估循环来执行字节码。实施(见C)见ceval.c

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

+0

其实我只想学习如何创建一个解释器来执行字节码指令。它可能不仅限于python。有没有任何资源可以帮助我继续使用它? – Rahul

+0

@Rahul:这是*方式*太宽泛的主题覆盖在这里,我也不知道任何资源或教程。 –

相关问题