在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Keil編譯器優(yōu)化方法

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

轉(zhuǎn)自 |魚鷹談單片機(jī)

我們都知道,代碼是可以通過編譯器優(yōu)化的,有的時(shí)候,為了提高運(yùn)行速度或者減少代碼尺寸,會(huì)開啟優(yōu)化選項(xiàng)

但是開啟了優(yōu)化,即意味著調(diào)試不方便。因?yàn)閷?shí)際匯編代碼執(zhí)行順序和源代碼不一定保持一致。在遇到復(fù)雜的問題下,就比較難定位了。

此時(shí)掌握多種編譯優(yōu)化設(shè)置的方法,就顯得尤為重要了,可以讓你進(jìn)行正宗源碼級(jí)別的調(diào)試。

1、全局優(yōu)化(整個(gè)工程所有源文件)

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

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

level 0(-O0) 代表不進(jìn)行優(yōu)化,原汁原味,這種方式編譯出來的可執(zhí)行文件比較大,但是因?yàn)槊恳粭l代碼都和匯編代碼順序一一對(duì)應(yīng),所以定位問題非常方便,非常建議代碼調(diào)試階段使用該等級(jí)。

2、組優(yōu)化

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

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

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

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

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

3、單個(gè)文件優(yōu)化

可能你的空間已經(jīng)到極限了,不允許把組里的文件都進(jìn)行優(yōu)化,那么單個(gè)文件優(yōu)化是個(gè)不錯(cuò)的選擇。

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

這個(gè)界面(Options for File main.c)就是針對(duì) man.c這個(gè)文件進(jìn)行優(yōu)化的,在這里可以選擇你希望優(yōu)化的級(jí)別,調(diào)試時(shí)設(shè)置level 0(-O0)就好。

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

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

別怕,MDK 貼心的為我們做了區(qū)分標(biāo)志。

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

這里的雪花標(biāo)志,即代表有特殊配置,但是不是僅僅優(yōu)化級(jí)別改變了就不一定了。

4、單個(gè)函數(shù)優(yōu)化

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

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

AC5 設(shè)置方法(O0 代表 0 優(yōu)化級(jí)別):

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

這里的 push、pop 主要是為了保留、恢復(fù)之前的優(yōu)化等級(jí),這樣操作只對(duì)當(dāng)前函數(shù)有效。

AC6設(shè)置方法

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    641

    瀏覽量

    29208
  • keil
    +關(guān)注

    關(guān)注

    68

    文章

    1213

    瀏覽量

    166875
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68603
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49129

原文標(biāo)題:總結(jié)Keil幾種編譯優(yōu)化設(shè)置的方法

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    Keil編譯器優(yōu)化問題

    大家好,我在使用單片機(jī)程序編譯過程中,碰到了一些問題,懇請(qǐng)高手回答。具體描述如下: 當(dāng)使用keil編譯器編譯過程中,設(shè)置為8級(jí)優(yōu)化,產(chǎn)生的燒
    發(fā)表于 12-18 16:39

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

    Keil C51編譯器用戶手冊 中文版:本手冊講述對(duì)8051 的目標(biāo)環(huán)境,如何使用Cx51 優(yōu)化C 編譯器編譯C 程序Cx51
    發(fā)表于 08-06 08:51 ?0次下載

    MCS-51程序空間擴(kuò)展原理及編譯器優(yōu)化

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

    Keil C編譯器編程規(guī)則和代碼優(yōu)化

    本內(nèi)容介紹了Keil C編譯器編程規(guī)則和代碼優(yōu)化,要實(shí)用好單片機(jī)就必須清楚它的內(nèi)部結(jié)構(gòu)組織結(jié)構(gòu),無論是在芯片的選擇還是代碼的編寫
    發(fā)表于 04-20 17:37 ?315次下載
    <b class='flag-5'>Keil</b> C<b class='flag-5'>編譯器</b>編程規(guī)則和代碼<b class='flag-5'>優(yōu)化</b>

    編譯器_keil優(yōu)化選項(xiàng)問題

    keil編譯器優(yōu)化選項(xiàng)針對(duì)ARM,對(duì)STM32編譯的一些優(yōu)化的問題
    發(fā)表于 02-25 14:18 ?3次下載

    關(guān)于KEIL ARM編譯器的使用介紹

    KEIL ARM編譯器的使用
    的頭像 發(fā)表于 07-10 10:50 ?6336次閱讀

    編譯器優(yōu)化對(duì)函數(shù)的影響

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

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

    Keil MDK 是否支持編譯器?有沒有辦法選擇其他編譯器? 可能你使用其他GUN工具鏈進(jìn)行編譯時(shí),會(huì)出現(xiàn)類似如下錯(cuò)誤: --- Error: cant execute as--- E
    的頭像 發(fā)表于 11-20 15:53 ?4701次閱讀

    基于C++編譯器的節(jié)點(diǎn)融合優(yōu)化方法

    LLVM是以C十十編寫的架構(gòu)編譯器的框架系統(tǒng),支持多后端和交叉編譯,用于優(yōu)化程序的編譯時(shí)間、鏈接時(shí)間、運(yùn)行時(shí)間和空閑時(shí)間。節(jié)點(diǎn)融合是一種簡單有效的優(yōu)
    發(fā)表于 06-15 14:29 ?19次下載

    Keil MDK使用GCC編譯器方法

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

    新版編譯器的設(shè)計(jì)思路和優(yōu)化方法

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

    編譯器優(yōu)化選項(xiàng)

    一個(gè)程序首先要保證正確性,在保證正確性的基礎(chǔ)上,性能也是一個(gè)重要的考量。要編寫高性能的程序,第一,必須選擇合適的算法和數(shù)據(jù)結(jié)構(gòu);第二,應(yīng)該編寫編譯器能夠有效優(yōu)化以轉(zhuǎn)換成高效可執(zhí)行代碼的源代碼,要做到
    的頭像 發(fā)表于 11-24 15:37 ?906次閱讀
    <b class='flag-5'>編譯器</b>的<b class='flag-5'>優(yōu)化</b>選項(xiàng)

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

    Triton編譯器與其他編譯器的比較主要體現(xiàn)在以下幾個(gè)方面: 一、定位與目標(biāo) Triton編譯器 : 定位:專注于深度學(xué)習(xí)中最核心、最耗時(shí)的張量運(yùn)算的優(yōu)化。 目標(biāo):提供一個(gè)高度抽象、靈
    的頭像 發(fā)表于 12-24 17:25 ?314次閱讀

    Triton編譯器優(yōu)化技巧

    在現(xiàn)代計(jì)算環(huán)境中,編譯器的性能對(duì)于軟件的運(yùn)行效率至關(guān)重要。Triton 編譯器作為一個(gè)先進(jìn)的編譯器框架,提供了一系列的優(yōu)化技術(shù),以確保生成的代碼既高效又適應(yīng)不同的硬件架構(gòu)。 1. 指令
    的頭像 發(fā)表于 12-25 09:09 ?174次閱讀
    主站蜘蛛池模板: 欧美黑人性xxx猛交| 美女视频黄a全部免费看小说 | 国产逼逼视频| 国产精品你懂的在线播放| 手机看片国产免费永久| 68日本 xxxxxxxxx| 色女人网| 91久久另类重口变态| 欧美三级网址| 色老头在线精品视频在线播放| 成人在线综合| 黄色在线看网站| 日韩精品另类天天更新影院| 夜夜澡人人爽人人喊_欧美| www.欧美.com| 欧美性天堂| 成人青草亚洲国产| 1024你懂的在线观看| 四虎永久精品视频在线| 91伊人久久大香线蕉| 综合免费一区二区三区| 日本免费黄色大片| 手机看片福利日韩| 二级片在线| 国产高清不卡一区二区| 欧美极品第1页专区| 三级精品在线观看| 国产日本三级| 欧美另类丰满69xxxxx| 日本xxxx色视频在线观看免| 神马午夜嘿嘿| 一级毛片 在线播放| www.色多多| 免费在线不卡视频| 国产网站在线| 狠狠摸狠狠操| 天堂网www最新版在线资源| 午夜小视频男女在线观看| 狠狠乱| videsgratis欧美另类| 三级a黄|