JIT コンパイラでいくつかのオペコードを動的に生成しており、オペコードの配置に関するガイドラインを探しています。
1) 呼び出しの後に nops を追加することで、アライメントを簡単に「推奨」するコメントを読みました
2)並列処理のためにシーケンスを最適化するために nop を使用することについても読みました。
3) ops のアラインメントが「キャッシュ」のパフォーマンスに適していることを読みました
通常、これらのコメントは裏付けとなる参照を提供しません。ブログやコメントを読んで、「これを行うのは良い考えだ」と言うのと、特定の op シーケンスを実装するコンパイラを実際に書いて、オンラインのほとんどの資料、特にブログが役に立たないことに気付くのとは別のことです。実用化のために。だから私は自分で物事を見つけることを信じています(実際のアプリが何をするかを見るために逆アセンブルなど)。これは、外部情報が必要な 1 つのケースです。
コンパイラは通常、前の命令シーケンスの直後に奇数バイトの命令を開始することに気付きました。そのため、ほとんどの場合、コンパイラは特別な注意を払っていません。あちこちで「nop」を見かけますが、通常、nop は控えめに使用されているようです。オペコードのアライメントはどの程度重要ですか? 実際に実装に使える事例を参考にしていただけないでしょうか?ありがとう。