色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Keil編譯器優化方法

strongerHuang ? 來源: 魚鷹談單片機 ? 2024-10-23 16:35 ? 次閱讀

轉自 |魚鷹談單片機

我們都知道,代碼是可以通過編譯器優化的,有的時候,為了提高運行速度或者減少代碼尺寸,會開啟優化選項

但是開啟了優化,即意味著調試不方便。因為實際匯編代碼執行順序和源代碼不一定保持一致。在遇到復雜的問題下,就比較難定位了。

此時掌握多種編譯優化設置的方法,就顯得尤為重要了,可以讓你進行正宗源碼級別的調試。

1、全局優化(整個工程所有源文件)

這種優化是大部分人最新了解、也是最新使用的一種方式,相信大家都知道。

297b06ca-9045-11ef-a511-92fbcf53809c.png

level 0(-O0) 代表不進行優化,原汁原味,這種方式編譯出來的可執行文件比較大,但是因為每一條代碼都和匯編代碼順序一一對應,所以定位問題非常方便,非常建議代碼調試階段使用該等級。

2、組優化

上面的方式,將所有的源文件都進行了優化配置。有一棍子打死的感覺。雖然大部分的時候沒有問題,但有些情況可能是個麻煩。

比如你的工程代碼,只有開啟最高優化級別(level 3(-O3))尺寸才足夠放入 FLASH 中,否則編譯出來的目標文件太大,放不進去,也就無法定位問題了。

此時,你可以使用該優化方式,將部分文件優化(需要定位問題的代碼),而保持其它文件的優化級別不變。

298927dc-9045-11ef-a511-92fbcf53809c.png

這里的 default 意味著和這里的優化級別和全局優化級別保持一致(即全局優化級別是啥,這里也是啥),但是我們可以通過這里差異化定制我們這個組里面的優化選項(這個組里有 app.c app_cfg.c 兩個文件,意味著這兩個文件的優化級別受這里控制)。

3、單個文件優化

可能你的空間已經到極限了,不允許把組里的文件都進行優化,那么單個文件優化是個不錯的選擇。

29a537c4-9045-11ef-a511-92fbcf53809c.png

這個界面(Options for File main.c)就是針對 man.c這個文件進行優化的,在這里可以選擇你希望優化的級別,調試時設置level 0(-O0)就好。

29d526fa-9045-11ef-a511-92fbcf53809c.png

這么多差異性,我們怎么知道我們對哪些文件做了特殊配置呢,不可能一個個查看吧。

別怕,MDK 貼心的為我們做了區分標志。

29f959da-9045-11ef-a511-92fbcf53809c.png

這里的雪花標志,即代表有特殊配置,但是不是僅僅優化級別改變了就不一定了。

4、單個函數優化

如果單個文件由于某種原因不能修改優化級別(比如改成 O0 直接不能運行,編譯不通過等,這些都有可能),那么可以試試單個函數優化這個方法。

不過不同的編譯器,可能方法不同(MDK 支持不同的編譯器,比如 AC5、AC6、GCC),所以如果真有必要,可以嘗試把需要優化的函數提取出來單獨作為一個源文件進行設置。

AC5 設置方法(O0 代表 0 優化級別):

#pragma push
#pragma O0
void function(void){
    ...                 // Optimized at O0
}
#pragma pop

這里的 push、pop 主要是為了保留、恢復之前的優化等級,這樣操作只對當前函數有效。

AC6設置方法

void function(void) __attribute__((optnone))
{
    ...   // Optimized none
}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 源碼
    +關注

    關注

    8

    文章

    667

    瀏覽量

    30127
  • keil
    +關注

    關注

    69

    文章

    1223

    瀏覽量

    168922
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70217
  • 編譯器
    +關注

    關注

    1

    文章

    1654

    瀏覽量

    49849

原文標題:總結Keil幾種編譯優化設置的方法

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    Keil修改ARM編譯器及配置方法

    Keil MDK自 V5.36 版本之后,默認就不帶 Arm Compiler V5版本編譯器。如果需要使用 V5 版本編譯器,就需要自己下載并安裝。
    發表于 09-19 10:41 ?6162次閱讀
    <b class='flag-5'>Keil</b>修改ARM<b class='flag-5'>編譯器</b>及配置<b class='flag-5'>方法</b>

    Keil編譯器優化問題

    大家好,我在使用單片機程序編譯過程中,碰到了一些問題,懇請高手回答。具體描述如下: 當使用keil編譯器編譯過程中,設置為8級優化,產生的燒
    發表于 12-18 16:39

    Keil C51編譯器用戶手冊 中文版

    Keil C51編譯器用戶手冊 中文版:本手冊講述對8051 的目標環境,如何使用Cx51 優化C 編譯器編譯C 程序Cx51
    發表于 08-06 08:51 ?0次下載

    MCS-51程序空間擴展原理及編譯器優化

    討論了MCS-51系列單片機程序空間擴展的原理,包括硬件與編譯器兩個方面,并提出一種編譯器優化方案.該方案在Keil仿真上檢驗并通過關健詞
    發表于 10-23 08:55 ?100次下載

    Keil C編譯器編程規則和代碼優化

    本內容介紹了Keil C編譯器編程規則和代碼優化,要實用好單片機就必須清楚它的內部結構組織結構,無論是在芯片的選擇還是代碼的編寫
    發表于 04-20 17:37 ?315次下載
    <b class='flag-5'>Keil</b> C<b class='flag-5'>編譯器</b>編程規則和代碼<b class='flag-5'>優化</b>

    編譯器_keil優化選項問題

    keil編譯器優化選項針對ARM,對STM32編譯的一些優化的問題
    發表于 02-25 14:18 ?3次下載

    關于KEIL ARM編譯器的使用介紹

    KEIL ARM編譯器的使用
    的頭像 發表于 07-10 10:50 ?6492次閱讀

    編譯器優化對函數的影響

    編譯器如gcc,可以指定不同的優化參數,在某些條件下,有些函數可能會被優化掉。
    的頭像 發表于 06-22 14:58 ?3022次閱讀
    <b class='flag-5'>編譯器</b><b class='flag-5'>優化</b>對函數的影響

    如何在Keil MDK中使用GCC編譯器工具鏈

    Keil MDK 是否支持編譯器?有沒有辦法選擇其他編譯器? 可能你使用其他GUN工具鏈進行編譯時,會出現類似如下錯誤: --- Error: cant execute as--- E
    的頭像 發表于 11-20 15:53 ?5096次閱讀

    基于C++編譯器的節點融合優化方法

    LLVM是以C十十編寫的架構編譯器的框架系統,支持多后端和交叉編譯,用于優化程序的編譯時間、鏈接時間、運行時間和空閑時間。節點融合是一種簡單有效的
    發表于 06-15 14:29 ?19次下載

    Keil MDK使用GCC編譯器方法

    有網友問:Keil 編譯速度有點慢,它支持GCC編譯嗎?
    的頭像 發表于 03-24 09:57 ?3729次閱讀
    <b class='flag-5'>Keil</b> MDK使用GCC<b class='flag-5'>編譯器</b>的<b class='flag-5'>方法</b>

    新版編譯器的設計思路和優化方法

    小程序編譯器在小程序開發、預覽、發布各個階段都需要使用,因此編譯器性能會直接影響到開發者開發效率,也會影響到開發者工具的使用體驗。 由于舊版的編譯器(基于 webpack4)在構建大型項目時會很慢,內存占用也高,一直被開發者吐槽
    發表于 10-13 11:21 ?463次閱讀
    新版<b class='flag-5'>編譯器</b>的設計思路和<b class='flag-5'>優化</b><b class='flag-5'>方法</b>

    編譯器優化選項

    一個程序首先要保證正確性,在保證正確性的基礎上,性能也是一個重要的考量。要編寫高性能的程序,第一,必須選擇合適的算法和數據結構;第二,應該編寫編譯器能夠有效優化以轉換成高效可執行代碼的源代碼,要做到
    的頭像 發表于 11-24 15:37 ?1223次閱讀
    <b class='flag-5'>編譯器</b>的<b class='flag-5'>優化</b>選項

    Triton編譯器與其他編譯器的比較

    Triton編譯器與其他編譯器的比較主要體現在以下幾個方面: 一、定位與目標 Triton編譯器 : 定位:專注于深度學習中最核心、最耗時的張量運算的優化。 目標:提供一個高度抽象、靈
    的頭像 發表于 12-24 17:25 ?869次閱讀

    Triton編譯器優化技巧

    在現代計算環境中,編譯器的性能對于軟件的運行效率至關重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優化技術,以確保生成的代碼既高效又適應不同的硬件架構。 1. 指令
    的頭像 發表于 12-25 09:09 ?734次閱讀
    主站蜘蛛池模板: 一本色道久久综合亚洲精品加 | 18岁末年禁止观看免费1000个 | 伊人草久久| 中文字幕一区久久久久 | 亚洲伦理精品久久 | 在线中文字幕亚洲日韩 | 国产在线伊人 | 99久久中文字幕伊人情人 | 一天不停的插BB十几次 | 在线中文字幕 | 动漫美女被到爽了流漫画 | 国产亚洲欧美在线观看三区 | 一个人看的www视频动漫版 | 欧美性情一线免费http | 国产成人精品视频免费大全 | 1V1各种PLAY女主被肉 | 秋霞av伦理片在线观看 | 亚洲色欲色欲WWW在线成人网 | 成人a毛片久久免费播放 | 亚洲精品久久无码AV片银杏 | 中文亚洲大香伊蕉不卡一区 | 亚洲另类中文字幕 | 亚洲精品久久国产高清 | 久久九九少妇免费看A片 | 国产成人精品免费视频大 | 中国少妇内射XXXHD免费 | 女仆乖H调教跪趴 | 日本美女搞基视频 | 大香伊人中文字幕精品 | 草草久久久亚洲AV成人片 | 国产精品99久久久久久WWW | 天天久久狠狠色综合 | 国产AV一区二区三区传媒 | 久久日本片精品AAAAA国产 | 欧洲另类一二三四区 | 伊人久久免费 | 99久久精品国产一区二区三区 | 97精品国产亚洲AV高清 | 学生小泬无遮挡女HD | 国产精品悠悠久久人妻精品 | 欧美高清videos 360p |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品