关于 while(1)和for(;;)效率问题的一点想法
实验环境:IAR EWARM 5.2
我就随便在一个嵌入式项目上做文章了,首先工程C语言编译优化选择了None, 输出选择带汇编输出,输出的汇编文件和C语言对应上。
我在main函数里先用for(;;)写了个死循环,我们看看编译结果:
注意main.c生成了一个对应的main.s
可以看到,是用一条跳转指令直接替代的for (;;)。
再更改一下代码:
编译一下看结果:
while(1)的循环也是一句跳转指令所替代。
IAR EWARM 5.2下,可见 for(;;)和while(1)在未开优化代码级别下,完全一样。无任何区别。
我们再来看看 linux 下的arm-rtems4.9-gcc的结果:
评论