<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è) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM的高效C語(yǔ)言編程

基于A(yíng)RM的高效C語(yǔ)言編程

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

  匯編代碼1:

  mov r0,#0

  mov r1,#0

  add1

  add r1,r1,#1

  cmp r1,#0x0a

  add r0,r1,r0

  bcc add1

  匯編代碼2:

  mov r0,#0

  mov r1,#0x0a

  add2

  subs r1,r1,#1

  add r0,r1,r0

  bne add2

  比較代碼1和代碼2,兩者的功能是相同的,但是代碼2在循環(huán)中少了1條指令。該循環(huán)的執行次數為10次,即在執行時(shí)共減少了10條指令。

  3.2 內聯(lián)函數的使用

  當函數體代碼較少(通常只有一兩條語(yǔ)句),且又被經(jīng)常調用時(shí),可將它設為內聯(lián)函數(inline)。對內聯(lián)函數的調用類(lèi)似于宏定義的展開(kāi),因此沒(méi)有函數調用的開(kāi)銷(xiāo)(即參數的傳遞和函數值的返回),只是增加了被調用函數的代碼量。

  例如在嵌入式系統中,經(jīng)常訪(fǎng)問(wèn)的外設端口的讀寫(xiě)代碼就可以設成內聯(lián)函數,以提高執行效率。外設寄存器的讀寫(xiě)函數如下:

  inline unsigned short reg_read(unsigned short reg){

  return (unsigned short)*(volatile unsigned short *)( reg);//外設寄存器的讀函數

  }

  inline void reg_write(unsigned short reg, unsigned short val){

  *(volatile unsigned short *)(reg)=val;//外設寄存器的寫(xiě)函數

  }

  這兩個(gè)函數的共同特點(diǎn)是:函數體的代碼很少,只有1個(gè)語(yǔ)句;使用的局部變量很少,只有1~2個(gè)參數。由于定義為內聯(lián)函數,程序的可讀性較好;在執行時(shí)由于沒(méi)有調用開(kāi)銷(xiāo),執行效率較高;函數體很小,在被展開(kāi)時(shí)空間開(kāi)銷(xiāo)不大。

  結語(yǔ)

  由于嵌入式系統對存儲空間的限制和實(shí)時(shí)性的需求,在編寫(xiě)代碼時(shí)必須采用相應的方法和原則以減少代碼的空間開(kāi)銷(xiāo)和時(shí)間開(kāi)銷(xiāo)。代碼優(yōu)化需要花費時(shí)間,并且代碼優(yōu)化后將降低源代碼的可讀性。因此,只有對經(jīng)常被調用且對性能影響較大的函數進(jìn)行優(yōu)化,才能最有效地優(yōu)化系統。


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

關(guān)鍵詞: 語(yǔ)言編程 高效 ARM 基于

評論


相關(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>