--- title: バイトコード slug: Mozilla/Projects/SpiderMonkey/Bytecodes tags: - SpiderMonkey translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecodes ---
SpiderMonkey バイトコードは、JavaScript エンジンで使用される標準形式のコード表現です。JavaScript フロントエンドは、ソーステキストから AST を構築してから、その AST から JSScript データ構造の一部としてスタックベースのバイトコードを生成します。バイトコードは、JSScript データ構造にも含まれているアトムとオブジェクトを (通常は配列インデックスで) 参照できます。
エンジン内では、すべてのバイトコードはスタックフレーム内で実行されます。グローバル (最上位) コードでも eval コードでもスタックフレームが関連付けられています。スタック上のフレームには、いくつかの異なるカテゴリの JavaScript 値 (タグ付き値形式) 用のスペースがあります。単一の JavaScript 値のスペースは「スロット」と呼ばれ、カテゴリは次のとおりです。
(a + b) + c
では、a をプッシュしてから b をプッシュして add をプッシュし、さらに c をプッシュから add のようにします。これには、最大2つの式スロットの深さが必要ですthis
のような値と呼び出し先/戻り値を保持する、専用の機能のために予約されているいくつかのスロットもあります。
式スタックにプッシュされた最新の値に対応する "Top of Stack" (TOS) が常にあります。すべてのバイトコードは、この場所に関して暗黙的に機能します。
すべてのオペコードには、実行全体のスタック効果を表すために [-popcount, +pushcount] という注釈が付けられています。
バイトコードのリストは SpiderMonkey の内部: バイトコードの説明ページに移動しました。