国产女人18毛片水真多18精品, 一区二区三区中文字-亚洲精品女国产, 欧美熟妇老熟妇88888久久久久, 一级毛片免费观看亚洲欧美国产精品,大波霸美女视频,日韩欧美激情V影院,熟女人伦21p,亚洲精品女国产,国产 乱子伦 在线

C語言

嵌入式C語言性能優(yōu)化方法

時間:2025-05-06 21:57:44 C語言 我要投稿
  • 相關推薦

嵌入式C語言性能優(yōu)化方法

  嵌入式系統(tǒng)是指完成一種或幾種特定功能的計算機系統(tǒng),具有自動化程度高,響應速度快等優(yōu)點,目前已廣泛應用于消費電子,工業(yè)控制等領域.嵌入式系統(tǒng)受其使用的硬件以及運行環(huán)境的限制,非常注重代碼的時間和空間效率,因此選擇一種合適的開發(fā)語言十分重要.嵌入式C語言性能優(yōu)化方法有哪些?下面是相關的知識,歡迎閱讀。

  使用宏定義

  在C語言中,宏是產生內嵌代碼的唯一方法。對于嵌入式系統(tǒng)而言,為了能達到性能要求,宏是一種很好的代替函數(shù)的方法。

  寫一個"標準"宏MIN ,這個宏輸入兩個參數(shù)并返回較小的一個:

  錯誤做法:

  #define MIN(A,B)  ( A  外部同步RAM > 外部異步RAM > FLASH/ROM

  對于程序代碼,已經被燒錄在FLASH或ROM中,我們可以讓CPU直接從其中讀取代碼執(zhí)行,但通常這不是一個好辦法,我們最好在系統(tǒng)啟動后將FLASH或ROM中的目標代碼拷貝入RAM中后再執(zhí)行以提高取指令速度;

  對于UART等設備,其內部有一定容量的接收BUFFER,我們應盡量在BUFFER被占滿后再向CPU提出中斷。例如計算機終端在向目標機通過RS-232傳遞數(shù)據(jù)時,不宜設置UART只接收到一個BYTE就向CPU提中斷,從而無謂浪費中斷處理時間;

  如果對某設備能采取DMA方式讀取,就采用DMA讀取,DMA讀取方式在讀取目標中包含的存儲信息較大時效率較高,其數(shù)據(jù)傳輸?shù)幕締挝皇菈K,而所傳輸?shù)臄?shù)據(jù)是從設備直接送入內存的(或者相反)。DMA方式較之中斷驅動方式,減少了CPU 對外設的干預,進一步提高了CPU與外設的并行操作程度。

  活用位操作

  使用C語言的位操作可以減少除法和取模的運算。在計算機程序中數(shù)據(jù)的位是可以操作的最小數(shù)據(jù)單位,理論上可以用"位運算"來完成所有的運算和操作,因而,靈活的位操作可以有效地提高程序運行的效率。舉例如下:

  /* 方法1 */

  int i,j;

  i = 879 / 16;

  j = 562 % 32;

  /* 方法2 */

  int i,j;

  i = 879 >> 4;

  j = 562 - (562 >> 5 >"通常可以提高算法效率。因為乘除運算指令周期通常比移位運算大。

  C語言位運算除了可以提高運算效率外,在嵌入式系統(tǒng)的編程中,它的另一個最典型的應用,而且十分廣泛地正在被使用著的是位間的與(&)、或(|)、非(~)操作,這跟嵌入式系統(tǒng)的編程特點有很大關系。我們通常要對硬件寄存器進行位設置,譬如,我們通過將AM186ER型80186處理器的中斷屏蔽控制寄存器的第低6位設置為0(開中斷2),最通用的做法是:

  #define INT_I2_MASK 0x0040

  wTemp = inword(INT_MASK);

  outword(INT_MASK, wTemp &~INT_I2_MASK);

  而將該位設置為1的做法是:

  #define INT_I2_MASK 0x0040

  wTemp = inword(INT_MASK);

  outword(INT_MASK, wTemp | INT_I2_MASK);

  判斷該位是否為1的做法是:

  #define INT_I2_MASK 0x0040

  wTemp = inword(INT_MASK);

  if(wTemp & INT_I2_MASK)

  {

  … /* 該位為1 */

  }

  上述方法在嵌入式系統(tǒng)的編程中是非常常見的,我們需要牢固掌握。


【嵌入式C語言性能優(yōu)化方法】相關文章:

嵌入式C語言優(yōu)化技巧10-27

嵌入式C語言優(yōu)化小技巧09-09

如何優(yōu)化C程序性能04-27

優(yōu)化JavaScript腳本的性能的方法09-03

c語言空間換時間優(yōu)化代碼的方法10-10

PHP程序性能優(yōu)化的方法10-29

c語言優(yōu)化階段07-11

c語言空間換時間優(yōu)化代碼的技巧方法06-19

C語言優(yōu)化小技巧10-04