我還沒有發現任何資源恰好回答什麼,我想用我在一塊的軟件看到我工作的問題來了解,所以我會問這裏的天才!浮點運算(PowerPC的,VxWorks的)
對於初學者,我在PowerPC處理器上運行VxWorks。
在嘗試調試一個單獨的問題,我想在中斷處理程序拋出一些快速和骯髒的調試代碼。它涉及一個雙精度浮點運算來存儲一個感興趣的值(也就是自從看到最後一箇中斷進入之後已經過了多長時間),後來我在運行線程的處理程序之外使用了這個值。我沒有看到這方面的問題(當然,這需要更長的時間,但是時間上我有很多樂趣;中斷不會太快),但VxWorks肯定不喜歡它。它一直崩潰,當它到達代碼,重新啓動系統的壞崩潰之一。我花了一點時間來追蹤雙重操作的問題來源,並且我意識到它甚至不是雙重的「操作」,即使從中斷中調用的例程中返回一個不變的雙重值,也很糟糕。
在PowerPC(或其它架構一般)的存在一般問題做浮點運算的中斷處理程序,並通過中斷處理程序調用的函數返回浮點(或其他類型)值?我不知道爲什麼這會導致程序崩潰。
(解決方法是推遲上次中斷「滴答」轉化爲「時間」,因爲拉斯特中斷,直到代碼落在該處理的,因爲它似乎處理長整數操作就好了。)
您不能使用64位定點值嗎?應該足夠大...... –
正如我所提到的,這是解決方法。一般來說,我不會在中斷處理程序中使用浮點運算,因爲它們往往需要很多操作才能完成,並且中斷處理程序需要很快。我的問題真的是「爲什麼不行」而不是「我該怎麼做」。我瞭解後者,但前者讓我難以置信。 – Anthony
它應該工作,沒有任何魔術或特殊的,應該工作以及任何其他變量類型或結構。我將反彙編編譯器生成的內容,以瞭解它將值放在哪裏以及另一端在何處拾取值,並將其與傳遞一個無符號整型或其他值進行比較並查看斷開連接。 –