<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è) > 嵌入式系統 > 設計應用 > ARM程序優(yōu)化及其在嵌入式TCP/IP協(xié)議實(shí)現中的應用

ARM程序優(yōu)化及其在嵌入式TCP/IP協(xié)議實(shí)現中的應用

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

隨著(zhù)技術(shù)的發(fā)展,人們對系統的智能化、小型化的要求也越來(lái)越高?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/ARM">ARM結構的微處理器以其高性能、低功耗、低價(jià)格等方面的優(yōu)勢被廣泛于各種電子產(chǎn)品,特別是一些高端的控制中,例如移動(dòng)電話(huà)、工業(yè)控制、網(wǎng)絡(luò )通信等方面。技術(shù)具有很好的性能和功效,其合作伙伴包括許多世界頂級的半導體公司??梢哉f(shuō)技術(shù)幾乎無(wú)處不在。

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

互聯(lián)網(wǎng)族在全世界范圍內已經(jīng)成為開(kāi)放系統互聯(lián)的,它提供了很好的交互操作能力,可兼容多種網(wǎng)絡(luò )技術(shù)。技術(shù)與技術(shù)的結合已經(jīng)展現出強勁的發(fā)展勢頭和巨大的市場(chǎng)潛力。如何開(kāi)發(fā)面向 ARM的高效代碼,尤其是提高類(lèi)似于棧等基礎性的軟件模塊的執行效率已成為每個(gè)從事基于A(yíng)RM的嵌入式系統開(kāi)發(fā)人員必須思考的問(wèn)題。

面向ARM的

開(kāi)發(fā)高效的涉及很多方面,包括優(yōu)秀的算法、良好的編程風(fēng)格以及針對目標的。程序是指軟件編程基本結束后,利用軟件開(kāi)發(fā)工具對程序代碼進(jìn)行調整和改進(jìn),使程序能夠更加充分地利用有限的軟硬件資源,縮減代碼尺寸,提高運行效率的過(guò)程。

在實(shí)際的程序設計過(guò)程中,程序優(yōu)化的兩個(gè)目標(運行速度和代碼大?。┩腔ハ嗝艿?。為了提高程序運行效率,就要以犧牲存儲空間、增加代碼量為代價(jià);而為了減少程序代碼量、壓縮存儲器空間,可能又要以降低程序運行效率為代價(jià)。按照優(yōu)化的側重點(diǎn)不同,程序優(yōu)化可分為運行速度優(yōu)化和代碼尺寸優(yōu)化。隨著(zhù)微電子技術(shù)的不斷發(fā)展,存儲空間已不再是制約系統集成的主要因素。面向ARM的程序優(yōu)化主要是討論如何在了解匯編語(yǔ)言和編譯規則的基礎上編寫(xiě)出能夠高效運行的C語(yǔ)言程序。

作為高性能、低功耗的RISC芯片,ARM的C語(yǔ)言編譯器已經(jīng)非常成熟。盡管如此,在編寫(xiě)面向ARM的C源程序時(shí),對程序進(jìn)行必要的優(yōu)化仍是提高程序運行效率的有效途徑。以下是一些在TCP/IP協(xié)議過(guò)程中用到的比較典型的優(yōu)化原則和方法,這些技術(shù)也適用于其他RISC

指令集微處理器。

變量定義

32位 ARM處理器的指令集支持有符號/無(wú)符號的8位、16位、32位整型和浮點(diǎn)型變量類(lèi)型,這不僅可以節省代碼,而且可以提高代碼的運行效率。按照作用范圍的不同,C語(yǔ)言的變量可以劃分為全局變量和局部變量。ARM編譯器通常將全局變量定位在存儲空間中,局部變量分配給通用寄存器。

在全局變量聲明時(shí),需要考慮最佳的存儲器布局,使得各種類(lèi)型的變量能以32位的空間位基準對齊,從而減少不必要的存儲空間浪費,提高運行效率。如:

49.jpg

這里定義的四個(gè)變量形式相同,只是次序不同,卻導致了在最終映像中不同的數據布局,如圖1所示。顯然第二種方式節約了更多的存儲器空間。

50.jpg

對于局部變量,要盡量不使用32位以外的變量類(lèi)型。當一個(gè)函數的局部變量數目不多時(shí),編譯器會(huì )把局部變量分配給內部寄存器,每個(gè)變量占一個(gè)32位的寄存器。這樣short和char類(lèi)型的變量不但起不到節省空間的作用,反而會(huì )耗費更多的指令周期來(lái)完成short和char的存取操作。C語(yǔ)言代碼編譯結果如下所示:

51.jpg

條件執行

條件執行是程序中必不可少的基本操作。典型的條件執行代碼序列是由一個(gè)比較指令開(kāi)始的,接下來(lái)是一系列相關(guān)的執行語(yǔ)句。ARM中的條件執行是通過(guò)對運算結果標志位進(jìn)行判斷的,一些帶標志位的運算結果中,N和Z標志位的結果與比較語(yǔ)句的結果相同。盡管在C語(yǔ)言中沒(méi)有帶標志位的指令,但在面向ARM的C語(yǔ)言程序中,如果運算結果是與0作比較,編譯器會(huì )移去比較指令,通過(guò)一條帶標志位指令實(shí)現運算和判斷。例如:

52.jpg

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

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁(yè) 1 2 3 4 下一頁(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>