ブランチテーブルとは
分岐テーブルは、命令の分岐を送信するか、switchステートメントを実装することにより、プログラムのある部分から別の部分、または動的にロードされた2番目のプログラムにプログラム制御を効率的に転送する方法です。 この方法は、ジャンプテーブルとも呼ばれ、一連の状況または条件に依存してジャンプを実行し、C +コンパイラからのswitchステートメントに従ってプロシージャを実装します。 ブランチテーブルの主な利点のいくつかは、コンパクトなコード構造と、プログラムフローを決定するときにリターンコードを個別にテストする必要性の削減です。
1980年代には、アセンブリ言語プログラミングでブランチテーブルが広く使用されていました。 組み込みシステムおよびオペレーティングシステム開発のアセンブリプログラミングで引き続き使用されています。 1990年代以降、コンパイラプログラミング言語でもブランチテーブル機能が利用されてきました。
分岐テーブルは、入力が与えられると、他の宛先に分岐する無条件命令のリストで構成されます。 ほとんどのコンピューターハードウェアは、これらの命令を効率的に実行できます。 場合によっては、オフセット(本質的には宛先までの距離)をプログラムカウンターレジスタに追加して、分岐命令のセットをポイントしたり、分岐命令のセット間をジャンプしたりできます。 ブランチテーブルを実装するために必要なのは、入力コードの検証、データのオフセットへの変換、および指定された命令長へのデータの乗算だけです。
組み込みプログラミングでは、マシンコードや配列ポインタを使用するよりもメモリ効率が高いため、ブランチテーブルを使用します。 組み込み制御システムにはそのメモリの節約が必要であり、ブランチテーブルへのアクセス中にわずかなパフォーマンスがかかる場合がありますが、仮想メソッド関数呼び出しは安定した機能のために同じ量のパフォーマンスがかかります。 組み込みシステムの制限されたCPUアクセスとメモリの節約には、静的関数セット用のブランチテーブルが必要です。
コンパイラプログラミング言語は、最適化コンパイラの検索キーを使用することにより、必要に応じて独自のブランチテーブルを生成します。 一部のプログラマーは、キーを検索するための2段階の条件付きパラメーターをコンパイラーに与えることにより、コンテキスト分岐テーブルの生成でコンパイラーを手動で支援することを選択します。 プログラムをコンパイルする初期の頃、ブランチテーブルの実装は、Fortranコンパイラ言語の「GoTo」コマンドでした。 ブランチテーブルは、コンパイラ言語でプログラムフローの変更を実装するため、または繰り返し命令シーケンスの開始点として引き続き使用されます。