新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于 while(1)和for(;;)效率問題的一點想法

        關于 while(1)和for(;;)效率問題的一點想法

        作者: 時間:2016-11-29 來源:網絡 收藏
        這幾天看到好友的文章關于while(1)和for(;;)效率的討論,手癢說了兩句。回頭一尋思,自己也只是推斷。沒有做任何實驗,我們就看看這兩種寫法到底有什么區別:


        本文引用地址:http://www.104case.com/article/201611/323485.htm

        實驗環境: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的結果:




        上一頁 1 2 下一頁

        關鍵詞: whilefor效率問

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 广东省| 新龙县| 波密县| 临漳县| 五寨县| 资源县| 大洼县| 得荣县| 泸州市| 河间市| 包头市| 九江市| 嘉祥县| 新乡县| 新邵县| 义乌市| 平阴县| 仙游县| 邳州市| 高阳县| 五家渠市| 靖州| 三原县| 潢川县| 衡山县| 双辽市| 泸定县| 潞城市| 读书| 咸宁市| 沿河| 阿拉善盟| 永川市| 鄂托克旗| 九寨沟县| 呼伦贝尔市| 清水县| 青浦区| 安达市| 尉氏县| 政和县|