私が取り組んでいるソフトウェアで見た問題について、私が理解しようとしていることに正確に答えるリソースを見つけられなかったので、ここで天才に尋ねます!
まず、PowerPC プロセッサで VxWorks を実行しています。
別の問題をデバッグしようとして、割り込み処理ルーチンに簡単で汚れたデバッグ コードを投げてみました。関心のある値 (つまり、最後の割り込みが発生してからの経過時間) を格納するために、倍精度浮動小数点演算が必要でした。これは、実行中のスレッドのハンドラーの外側で後で使用しました。これには問題は見られませんでしたが (確かに、時間がかかりますが、時間的には余裕がありました。割り込みはそれほど速くはありません)、VxWorks は確かに気に入らなかったようです。そのコードに到達すると、一貫してクラッシュします。これは、システムを再起動する悪いクラッシュの 1 つです。問題の原因として double 操作を突き止めるのに少し時間がかかりました。割り込みで呼び出されたルーチンから一定の double を返すことでさえ、悲惨な失敗をしました。
PowerPC (またはその他の一般的なアーキテクチャ) では、割り込みハンドラで浮動小数点演算を実行し、割り込みハンドラによって呼び出される関数で浮動小数点 (または他のタイプ) の値を返す際に一般的に問題がありますか? これによりプログラムがクラッシュする理由がわかりません。
(回避策は、最後の割り込み以降の「ティック」から最後の割り込み以降の「時間」への変換を、コードがハンドラーの外に出るまで遅らせることでした。これは、長い整数操作をうまく処理しているように見えるためです。)