F4系列双精度浮点运算和FPU的关系
在程序调试中发现,一样的代码,在X86 PC机环境下,用vc运行的运算精度和收敛速度要比F407单片机运行效果好。变量和函数我都是定义成double的,看资料,fpu支持的是32位浮点运算,那么fpu在这个双精度的浮点运算中是如何发挥作用的呢?(算法运算量很大,我把fpu关掉的话系统直接出错。所以虽然都是double类型的运算,肯定还是fpu在起作用)个人理解,无论是double还是float计算,都要先把数据放到寄存器,通过寄存器进行计算,而ARM M系列是32位寄存器,所以double也要分成两部分,此时也就相当于把double转换成float了。此时就可以使用fpu进行浮点运算了。所以double和float都会用到fpu。 对这个问题,可以开个Keil工程对比一下
FPU编译选项开关
FPU打开的情况下,编译的目标代码
FPU关闭的情况下,编译的目标代码
关于LDR、VLDR、VSTR编译指令,附几个链接,请参考。
ARM 浮点运算详解
http://blog.csdn.net/sydnash/article/details/6366964
VLDR,VSTR
http://blog.csdn.net/liuchao1986105/article/details/6552306
LDR指令
http://blog.csdn.net/tanyouliang/article/details/6767011
页:
[1]