1

関数ポインター テーブルがあり、インデックスが volatile 変数として提供されている場合、生成されたコードは分岐なしと見なされ、投機的な実行が回避されますか? それとも、プロセッサは最も可能性の高い分岐を推測しようとしますか?

簡単な例として、次のことを考慮してください。

if (input_value > thresh) {
    do_this();
} else {
    do_that();
}

投機的実行を行う CPU は、上記のコードで最も可能性が高いと思われる分岐を試みると予測しています。

ただし、ジャンプ テーブルに変換すると、次のようになります。

this_or_that[input > thresh]();

上記のコードはまだ投機的実行をトリガーしますか?

4

1 に答える 1