2012-02-28 28 views
0

我有一個浮點數,需要將它存儲在一個4字節的寄存器。 但是,當我做下面的例子的操作時,我不會得到一個正確的值,因爲它被損壞爲0x0000C000。寫浮動到一個4字節的寄存器

typedef float FLT; 
FLT val , temp_val; 
val = -6.513467; 
(volatile FLT*)0x402174 = val; 

相反,如果我用一個變量地址如下,並在& _temp_val檢查,它的工作原理。在_temp_val

temp_val = val; 

值是0xC0D06E52(IEEE 754格式)

我無法理解爲什麼我不能寫入寄存器。

回答

0

您應該通過平臺定義頭文件中的某個變量訪問該寄存器,而不是通過其地址進行硬編碼。

您的C編譯器可能也會使用該寄存器,因此您的分配可能會被破壞。

您可以查看C編譯器爲您的代碼生成的彙編代碼。

您的C編譯器也可能允許這樣的語法。

register float *f asm ("r0") = ...; 
相關問題