上篇文章简单说了下ARM编译器的选择,本篇文章通过一些例子演示下。
测试代码如下:
void main(int argc, char **argv)
{
double c = 1.0000000000000000001;
for(int i=0;i<1000000000;i++)
c *= c;
printf("c = %.300f\n", c);
}
一、平台1测试(ARMV7指令集,支持硬件浮点)
floathard程序是编译时指定浮点计算为硬件浮点,指令集为V7。
floatsoft程序是编译时指定浮点计算为软件浮点,指令集为V7。
测试截图如下,可以看到硬件浮点的计算要快。
二、平台2测试(ARMV7指令集,不支持硬件浮点)
floathard程序是编译时指定浮点计算为硬件浮点,指令集为V7。
floatsoft程序是编译时指定浮点计算为软件浮点,指令集为V7。
测试截图如下,可以看到运行硬件浮点的程序时提示错误为 “not found”,今后如果编写的程序执行时碰到类似错误提示可以考虑下是否为编译器的浮点选项配置不正确。