2017-03-19 13 views
0

私はv8_hello_worldサンプルをコンパイルしていて、コンソールに "hello world"という文字列を表示できます。私はV8がJavaScriptをJITでコンパイルすることを知っていますが、コンパイルされた指示などの詳細なメッセージを出力したいと思います。また、これらの命令の種類も知りたいので、どうすればよいですか?V8エンジンでコンパイルされた命令を印刷するには?

は〜

答えて

1

生成されたコードのタイプ(複数可)に応じて、あなたが興味を持っているありがとうございました、あなたはV8に対応するフラグ(複数可)を渡す必要があります:

  • --print-codeプリント(「フルコード生成」によって作成され、unoptimizingコンパイラ)最適化されていないマシンコード(「点火」インタプリタにより作成)
  • --print-bytecodeプリントバイトコードマシンコード(クレア最適化
  • --print-opt-codeプリント

これらのフラグ(と多くの他のもの)は、--helpで文書化されています。実行パイプラインの大きな変更は現在進行中ですので、使用しているV8のバージョンによって、異なるコンパイラでコンパイルされた同じ機能が表示されることがあります。

開発者シェルd8を使用する場合は、これらのフラグをコマンドラインで直接渡すことができます。埋め込みアプリケーションでv8::V8::SetFlagsFromCommandLineを使用すると、argcargvをV8に渡すことができます。 d8.ccでは、いくつかのフラグを自分で処理し、他のフラグをV8に渡す方法の例を見ることができます。

+0

ありがとうございます!それは私に多くの助けになる! – Oceanisher

+0

@jmrk少し混乱しました。水素とリチウムは何ですか? 私はそれらについて記事を読んでいます。http://www.mattzeunert.com/2015/08/19/viewing-assembly-code-generated-by-v8.html –

+1

@DineshRavi:それらはハイレベル"Crankshaft"最適化コンパイラの低レベル中間表現です。それ以来「Turbofan」に置き換えられています。 – jmrk

関連する問題