2012-02-28 55 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") = ...; 
相关问题