1.arm c編譯器預設char型別是8位無符號的,與其它編譯器有點不同
2.區域性變數最好用int型,因為暫存器是32位的,如果變數不是32位的就需要額外的指令限制範圍.
例如: 變數i,操作i++ ,如果int i, 則只需add r1,r1,#1 如果char i,則變成add r1,r1,#1
and r1,r1, 0xff .多了一條指令
3.迴圈最好用do{}while()型的,相比for(;;)型迴圈每次迴圈可以節省3條指令
4.函式引數也最好用int 型的,例如 short add(short x,short y)
編譯器為了保證輸入引數的是short型的會新增額外的指令,比如確保x是short型的,需要
mov r0,r0,lsr #16 mov r0,r0,asr #16
5.函式引數最好不要超過4個,因為前4個引數是通過暫存器r0-r3傳遞的,超過4個後的引數使用堆疊傳遞,速度慢多了.
6.適當的展開迴圈.迴圈有一定的開銷,在乙個迴圈中多做幾遍操作,減少迴圈的次數可以減少迴圈的開銷.
例如: i = 0; int i;
do dowhile(i<64) 改為 i++;}while(i<64)
當然,這樣做也增加了**長度.
7.使用減計數到0的迴圈結構,這樣就不用用暫存器儲存終止值.
8.使用無符號的迴圈計數值,迴圈條件是i!=0,而不是i>0, 這樣迴圈的開銷只有2條指令
ARM上的C程式設計
1 arm c編譯器預設char型別是8位無符號的,與其它編譯器有點不同 2 區域性變數最好用int型,因為暫存器是32位的,如果變數不是32位的就需要額外的指令限制範圍.例如 變數i,操作i 如果int i,則只需add r1,r1,1 如果char i,則變成add r1,r1,1 and r1...
關於ARM上程式設計的
arm彙編優化 要做程式的優化,最徹底的方法當然是彙編!還有除了彙編以外 除了二進位制 能讓你對你的處理器有更全面的控制嗎?對於arm彙編,作為乙個初學者,也就只好先補補基礎了 首先,程式段的定義從area 開始,它命名乙個 區域,注意,用非阿拉伯數字作為名字時,應該用 把名字包起來,code關鍵字...
基於ARM的高效C語言程式設計
arm處理器提高執行速度和減小 尺寸是嵌入式軟體設計的關鍵需求,以其高效能 低功耗 低成本等優勢被廣泛應用於各種成功的32位嵌入式系統中。儘管大多數的arm編譯器和偵錯程式都帶有效能優化工具,但是為了保證其正確性,編譯器必須是穩妥和安全的,而且它還受到處理器自身結構的限制。因此,程式設計人員必須在理...