ARM上的C編程

來源:互聯網
上載者:User
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                                        do{
              {                                             i++;
                 i++;                                     i++;
              }while(i<64)   改為             i++;}while(i<64)
    當然,這樣做也增加了代碼長度.

7.使用減計數到0的迴圈結構,這樣就不用用寄存器儲存終止值.

8.使用無符號的迴圈計數值,迴圈條件是i!=0,而不是i>0, 這樣迴圈的開銷只有2條指令  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.