関数ポインター テーブルがあり、インデックスが volatile 変数として提供されている場合、生成されたコードは分岐なしと見なされ、投機的な実行が回避されますか? それとも、プロセッサは最も可能性の高い分岐を推測しようとしますか?
簡単な例として、次のことを考慮してください。
if (input_value > thresh) {
do_this();
} else {
do_that();
}
投機的実行を行う CPU は、上記のコードで最も可能性が高いと思われる分岐を試みると予測しています。
ただし、ジャンプ テーブルに変換すると、次のようになります。
this_or_that[input > thresh]();
上記のコードはまだ投機的実行をトリガーしますか?