arm 暫存器 函式 引數
阿新 • • 發佈:2019-01-09
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
}