ARM上的彙編最佳化小方法

來源:互聯網
上載者:User
1. 加減法,邏輯操作佔一個周期,目的地址是PC寄存器時增加一個周期。分支指令佔3個周期。在cache命中的情況下,16位和8位的裝載指令(LDRH、LDRH等)佔一個周期,但緊跟的2個周期不能使用裝入的資料。32位裝載指令佔一個周期,緊跟的一個周期不能使用裝載資料。如果裝載入PC,同樣要增加2個周期。
             LDR    r1,[r2]        ADD  r1,r1,r3       ADD  r4,r4,r5    佔4個周期
改變次序後
             LDR    r1,[r2]        ADD  r4,r4,r5        ADD  r1,r1,r3    佔3個周期

2. load指令占時間比較長,在迴圈中可以使用預載的方法將load與跳轉指令放在一起,減少流水線的斷流。
例如:
loop
    LDRB   r2,[r1]
     ...............           //do
    B            loop
更改為
   LDRB   r2,[r1]
loop
    ..............            //do
    LDRB   r2,[r1]
    B          loop

3. 迴圈展開時,可以在計算i步時就載入i+1步的資料,在i步的結果還沒準備好時執行i+1步計算。

4. ARM只有16個可見寄存器,其中14個通用寄存器,1個堆棧指標r13,1個程式計數器r15。在影像處理的應用中很多是8位的運算元,可以利用32為寄存器一次進行兩組運算。
例如:加操作      100 + 50    和       2 + 3
    位                     24                16               8                 0
    運算元1           0                100              0                 2
    運算元2           0                 50                0                3
    結果                 0                 150              0                5

5. 寄存器數量不夠時,可用32為寄存器儲存兩個16位變數和4個8位變數。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.