1. 程式人生 > >arm 暫存器 函式 引數

arm 暫存器 函式 引數

1.暫存器使用說明

ARM處理器中R0-R15共16個暫存器,它們的用途是一些約定的習慣!

並依據這些用途定義了別名。

如圖:

暫存器的使用情況如下:

1)子程式間通過暫存器R0-R3來傳遞引數,這時可以使用它們的別名A0-A3,被呼叫的子程式返回前無須重複R0-R3的內容。

2)在子程式中,使用R4-R11來儲存區域性變數,這時可以使用它們的別名V1-V8,如果在子程式中使用了它們的某些暫存器,子程式進入時要儲存這些暫存器的值,返回時再次恢復它們;

對於子程式中沒有使用到的暫存器,則不必進行這些操作,在Thumb指令中,通常只能使用暫存器R4-R7來儲存區域性變數。

3)暫存器R12用作子程式間scratch暫存器,別名為IP。

4)暫存器R13用作資料棧指標,別名SP,在子程式中暫存器R13不能用作它用,它的值在進入、退出子程式時必須相等。

5)暫存器R14稱為連結暫存器,別名LR,它用於儲存子程式的返回地址。

如果在子程式中儲存了返回地址,R14可用作它用。

6)暫存器R15是程式計數器,別名PC,沒用別的用途

R0~R3作為傳遞引數的暫存器

void fun(int a, int b, int c) 

{

// a---> r0

//b----> r1

//c----> r2

}