ARM彙編優化技巧

2021-10-09 11:24:35 字數 1157 閱讀 6923

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個週期...

ARM彙編和內嵌彙編

彙編指令 跳轉指令 b bl blxbx 資料處理指令 mov mvnadd adcsub rsbrsc andor eorbic cmncmp tstteq 狀態暫存器指令 mrs msrldr strldm stmmcr arm和協處理器之間資料交換 mrccond 可選的條件 rd 存放返回狀...