ARM上的彙編優化小方法

2021-06-15 22:03:58 字數 1158 閱讀 1765

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位變數。 

ARM彙編優化

要做程式的優化,最徹底的方法當然是彙編!還有除了彙編以外 除了二進位制 能讓你對你的處理器有更全面的控制嗎?對於arm彙編,作為乙個初學者,也就只好先補補基礎了 首先,程式段的定義從area 開始,它命名乙個 區域,注意,用非阿拉伯數字作為名字時,應該用 把名字包起來,code關鍵字宣告程式 猜測 ...

ARM彙編優化技巧

1.加減法,邏輯操作佔乙個週期,目的位址是pc暫存器時增加乙個週期。分支指令佔3個週期。在cache命中的情況下,16位和8位的裝載指令 ldrh ldrh等 佔乙個週期,但緊跟的2個週期不能使用裝入的資料。32位裝載指令佔乙個週期,緊跟的乙個週期不能使用裝載資料。如果裝載入pc,同樣要增加2個週期...

PHP優化速度常用小方法

php 級別的速度優化 1 用 代替 來包含字串 因為 不用做變數替換,所以 row id 速度就比 row id 快,不要小看這些無助輕重的小事兒,量多了就不好說了。2 static方法 的比普通方法速度快.3 echo比print快.4 在執行for迴圈之前確定最大迴圈數,不要每迴圈一次都計算最...