マシンコードのアライメントの原則を理解しようとしています。実行時にマシンコードを生成できるアセンブラー実装があります。すべての分岐先で 16 バイトのアラインメントを使用していますが、最適な選択ではないようです。アラインメントを削除すると、同じコードよりも高速に動作する場合があることに気付いたからです。キャッシュ ライン幅と関係があると思います。そのため、一部のコマンドがキャッシュ ラインによってカットされ、そのために CPU がストールします。そのため、ある場所に数バイトのアラインメントが挿入されると、キャッシュの境界線を越えてどこかに命令が移動します...
コード全体を処理し、CPU の仕様 (キャッシュ ライン幅、32/64 ビットなど) に従ってアラインメントを挿入できる自動アラインメント手順を実装したいと考えていました...
誰かがこの手順についていくつかのヒントを与えることができますか? 例として、ターゲット CPU は Intel Core i7 CPU 64 ビット プラットフォームである可能性があります。
ありがとうございました。