2013-07-29 58 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:這是*方式*太寬泛的主題覆蓋在這裏,我也不知道任何資源或教程。 –

相關問題