4

WindRiver C コンパイラ (別名 Diab C (?)) で命令の並べ替えを禁止する適切で受け入れられている方法を探しています。問題は、同じ関数内でハードウェア レジスタを数回書き込む必要があり、オプティマイザがシーケンスを並べ替えたり、さらに悪いことに、複数の書き込みを 1 つにまとめたりしたくないことです。この目に見えない信頼できない前提条件に依存したくないので、「揮発性」をお勧めしないでください (主に定義が私の制御下にない可能性があるため)。現在、空のインライン アセンブラ ステートメントを使用しています。

 asm volatile (" ");

コンパイラのドキュメントでは、これにより並べ替えが防止されるため、サロゲートとして使用します。OTOH には、WindRiver C のすべての適切なユーザーが知っておくべき、より一般的な方法がある可能性があります。

前もって感謝します

4

0 に答える 0