0

インタープリターがバイトコードをどのように消費して実行するかを理解しようとしています。たとえば Python を例にとると、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 に答える