<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 高效率嵌入式程序開(kāi)發(fā)技巧

高效率嵌入式程序開(kāi)發(fā)技巧

作者: 時(shí)間:2009-07-20 來(lái)源:網(wǎng)絡(luò ) 收藏

摘 要:系統對應用軟件的質(zhì)量要求很高,在開(kāi)發(fā)中須注意對代碼進(jìn)行優(yōu)化,盡可能地提高代碼效率。雖然C編譯器都提供了一定程度的代碼優(yōu)化,但大部分由編譯器執行的優(yōu)化技術(shù)僅涉及執行速度和代碼大小的平衡,不可能使程序既快又小,因而必須在編寫(xiě)程序時(shí)采取必要的措施。本文針對提供了一些編程,對實(shí)際系統開(kāi)發(fā)具有重要作用。
關(guān)鍵詞:編譯器; ; 代碼優(yōu)化

本文引用地址:http://dyxdggzs.com/article/152417.htm

引言
在多媒體、通信等計算復雜度高的應用中,為了滿(mǎn)足制造費用、功耗、性能以及實(shí)時(shí)性等諸多限制條件的要求,嵌入式系統程序往往需要特殊設計。這使得設計師在設計面向特定應用的嵌入式軟件時(shí),需要有一套切實(shí)可行的編程準則。而在實(shí)際程序設計中,工程師尤其需要考慮對變量的使用和循環(huán)程序的處理。

變量使用
在進(jìn)行實(shí)際時(shí),變量的使用至關(guān)重要,其中使用全局變量比向函數傳遞參數更加有效,這樣免去了函數調用時(shí)參數入棧和出棧的需要。當然,使用全局變量會(huì )對程序有一些副作用。變量定義的次序會(huì )導致最終映像中數據布局的不同,如圖1所示。


圖1 變量映像次序混亂狀況

由此可見(jiàn),在聲明變量時(shí),需要考慮怎樣最佳地控制存儲器布局。最好的方法是在編程的時(shí)候,把所有相同類(lèi)型的變量放在一起定義。

通常,工程師設法使用short或char來(lái)定義變量以節省存儲器空間。在函數的局部變量數目有限的情況下,編譯器會(huì )把局部變量分配給內部寄存器,每個(gè)變量占用一個(gè)寄存器。在這種情況下,使用short和char型變量不但不會(huì )節省空間,反而會(huì )帶來(lái)其它的副作用。如圖2所示:假定a是任意可能的寄存器,存儲函數的局部變量。同樣完成加1的操作,32位的int型變量最快,只用一條加法指令。而8位和16位變量,完成加法操作后,還需要在32位的寄存器中進(jìn)行符號擴展。其中,帶符號的變量,要用邏輯左移和算術(shù)右移兩條指令才能完成符號擴展;無(wú)符號的變量,要使用一條邏輯與指令對符號位進(jìn)行清零。所以,使用32位的int或unsigned int局部變量最有效。某些情況下,函數從外部存儲器讀入局部變量進(jìn)行計算,這時(shí)候,需要把不是32位的變量轉換成32位。至于把8位或16位變量擴展成32位后,隱藏了原來(lái)可能溢出異常這個(gè)問(wèn)題,需要進(jìn)一步仔細考慮。


圖2 不同類(lèi)型局部變量的加法程序

在程序中,經(jīng)常會(huì )使用switch case語(yǔ)句,每一個(gè)由機器語(yǔ)言實(shí)現的測試和跳轉僅僅是為了決定下一步要做什么,就浪費了處理器時(shí)間。為了提高速度,可以把具體的情況按照它們發(fā)生的相對頻率排序。即把最可能發(fā)生的情況放在第一,發(fā)生概率小的情況放在最后,這樣會(huì )減少代碼平均執行時(shí)間。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>