3

IMHOオペコードは主にPHPのコンテキストで言及されているため、この質問は主にPHPに関連しています。この説明によると、phpコードからopcodeへの変換プロセスは次のとおりです。

phpテキスト->スキャン/解析->結果=トークン->コンパイル>結果=オペコード

ここにいくつかの質問があります:

1)オペコードはマシンコードの一部にすぎませんか?マシンコードはオペコードで構成されていますか?2)Wampサーバーのコンテキストで考えると、どのPHPモジュールが責任を負っていますか?そのモジュールは、PHPコードをトークンに変換する単なるPHPインタープリターですか、それともハードウェア(プロセッサー)で実行されるオペコードにトークンをコンパイルするコンパイラーですか?

4

2 に答える 2

3

IMHOオペコードは主にPHPのコンテキストで言及されているため、この質問は主にPHPに関連しています。

実際、Javaはそのバイト/オペコードでより人気があります

1)オペコードはマシンコードの一部にすぎませんか?マシンコードはオペコードで構成されていますか?

はい。ただし、このオペコードはマシンに依存します。JavaまたはPHPバイトコードの興味深い点は、マシンに依存せず、プラットフォーム固有の仮想マシンで実行されることです。

2)Wampサーバーのコンテキストで考えると、どのPHPモジュールが責任を負っていますか?

モジュールはありません。コアの一部です。

Lexer => Tokenizer => Compiler

そのモジュールは、PHPコードをトークンに変換する単なるPHPインタープリターですか、それともハードウェア(プロセッサー)で実行されるオペコードにトークンをコンパイルするコンパイラーですか?

ではない正確に。結果のバイトコードはマシンに依存せず(「Zend-opcode」という名前)、ハードウェア上で直接実行することはできません。最後のステップは、このバイトコードをマシン依存のオペコードに変換することです。

于 2012-06-14T07:45:55.550 に答える
1
  • マシンコード-マシンプロセッサで実行する準備ができているコード
  • opcode-インタプリタによって実行されるコード

オペコードは、内部機能であるphpコアによって実行されます。phpスクリプトを高速化するために、モジュールPHP Acceleratorがあります。このモジュールは、コンパイルされたバイトコードをキャッシュして、次回プロセッサによって直接実行されるようにします。

于 2012-06-14T07:47:47.870 に答える