上記の 2 つのケースに固有の情報を見つけるのに苦労していますが、あなたの専門家の意見を聞いています。
最初のことは、間接jmpが分岐予測を損なうことを知っています。また、間接jmpの結果が一定であっても、絶対jmpと比較して、予測メンテナンスバッファーなどが必要であることを知っています。
私の質問は、誰かが知っているかどうかです:
mov rax, 1234567812345678h;
jmp rax;
プロセッサの分岐予測子によってまだ間接的であると見なされているか、この場合は計算を実行します.x64には直接的な「jmp absolute 64」命令がなく、間接的な命令しかないため、そうしています。:/ ( How to execute a call instruction with a 64-bit absolute address?代わりにジャンプをターゲットに十分近づけて使用できない場合は、これを示唆していますjmp rel32
。)
次に、その範囲で、jmp 0x1234 と call 0x1234 の間に実際の違いはありますか (プロセッサの最適化 (命令キャッシュ、プリフェッチャーとそのヒント、分岐予測) に関して) ? (vc2012 の「速度最適化」は呼び出し、「min_size opt」は jmp、「混合最適化」は x64 の場合は jmp、x86 の場合は呼び出し)