新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > Linux下C編程基礎(chǔ)之:gcc編譯器

        Linux下C編程基礎(chǔ)之:gcc編譯器

        作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

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

        (4)優(yōu)化選項。

        gcc可以對代碼進行優(yōu)化,它通過編譯選項“-On”來控制優(yōu)化代碼的生成,其中n是一個代表優(yōu)化級別的整數(shù)。對于不同版本的gcc來講,n的取值范圍及其對應的優(yōu)化效果可能并不完全相同,比較典型的范圍是從0變化到2或3。

        不同的優(yōu)化級別對應不同的優(yōu)化處理工作。如使用優(yōu)化選項“-O”主要進行線程跳轉(zhuǎn)(ThreadJump)和延遲退棧(DeferredStackPops)兩種優(yōu)化。使用優(yōu)化選項“-O2”除了完成所有“-O1”級別的優(yōu)化之外,同時還要進行一些額外的調(diào)整工作,如處理器指令調(diào)度等。選項“-O3”則還包括循環(huán)展開和其他一些與處理器特性相關(guān)的優(yōu)化工作。

        雖然優(yōu)化選項可以加速代碼的運行速度,但對于調(diào)試而言將是一個很大的挑戰(zhàn)。因為代碼在經(jīng)過優(yōu)化之后,原先在源程序中聲明和使用的變量很可能不再使用,控制流也可能會突然跳轉(zhuǎn)到意外的地方,循環(huán)語句也有可能因為循環(huán)展開而變得到處都有,所有這些對調(diào)試來講都將是一場噩夢。所以筆者建議在調(diào)試的時候最好不使用任何優(yōu)化選項,只有當程序在最終發(fā)行的時候才考慮對其進行優(yōu)化。

        (5)體系結(jié)構(gòu)相關(guān)選項。

        gcc的體系結(jié)構(gòu)相關(guān)選項如表3.10所示。

        表3.10 gcc體系結(jié)構(gòu)相關(guān)選項列表

        選項

        含義

        -mcpu=type

        針對不同的CPU使用相應的CPU指令。可選擇的type有i386、i486、pentium及i686等

        -mieee-fp

        使用IEEE標準進行浮點數(shù)的比較

        -mno-ieee-fp

        不使用IEEE標準進行浮點數(shù)的比較

        -msoft-float

        輸出包含浮點庫調(diào)用的目標代碼

        -mshort

        把int類型作為16位處理,相當于shortint

        -mrtd

        強行將函數(shù)參數(shù)個數(shù)固定的函數(shù)用retNUM返回,節(jié)省調(diào)用函數(shù)的一條指令

        這些體系結(jié)構(gòu)相關(guān)選項在嵌入式的設(shè)計中會有較多的應用,讀者需根據(jù)不同體系結(jié)構(gòu)將對應的選項進行組合處理。在本書后面涉及具體實例時將會有針對性的講解。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        linux相關(guān)文章:linux教程


        c++相關(guān)文章:c++教程



        上一頁 1 2 3 4 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 胶州市| 黄骅市| 贺兰县| 淮阳县| 加查县| 红原县| 麻城市| 宁明县| 凉城县| 九台市| 辉县市| 承德市| 抚宁县| 台安县| 呼和浩特市| 南华县| 贡觉县| 武功县| 黎平县| 织金县| 义马市| 揭东县| 清水河县| 长治县| 山阳县| 巫山县| 阿拉善右旗| 乌什县| 应城市| 北票市| 田阳县| 东丽区| 清丰县| 晴隆县| 肇东市| 随州市| 岳池县| 抚宁县| 尼勒克县| 江西省| 乐安县|