ARM暫存器別名及作用

2021-06-22 04:50:24 字數 1174 閱讀 1582

根據「arm-thumb 過程呼叫標準」:

1,  r0-r3 用作傳入函式引數,傳出函式返回值。在子程式呼叫之間,可以將 r0-r3 用於任何用途。被呼叫函式在返回之前不必恢復 r0-r3。---如果呼叫函式需要再次使用 r0-r3 的內容,則它必須保留這些內容。

2, r4-r11 被用來存放函式的區域性變數。如果被呼叫函式使用了這些暫存器,它在返回之前必須恢復這些暫存器的值。

3, r12 是內部呼叫暫時暫存器 ip。它在過程鏈結膠合**(例如,互動操作膠合**)中用於此角色。在過程呼叫之間,可以將它用於任何用途。被呼叫函式在返回之前不必恢復 r12。

4,暫存器 r13 是棧指標 sp。它不能用於任何其它用途。sp 中存放的值在退出被呼叫函式時必須與進入時的值相同。

6,暫存器 r15 是程式計數器 pc。它不能用於任何其它用途。

7,在中斷程式中,所有的暫存器都必須保護,編譯器會自動保護r4~r11,所以一般你自己只要在程式的開頭

sub lr,lr,#4

stmfd sp!,;保護r0~r3,r12,lr就可以了,除非你用彙編人為的去改變r4~r11的值。(具體去看ucos os_cpu_a.s中的irq中斷的**)

apcs,arm 過程呼叫標準(arm procedure call standard),提供了緊湊的編寫例程的一種機制,定義的例程可以與其他例程交織在一起。最顯著的一點是對這些例程來自**沒有明確的限制。它們可以編譯自 c、 pascal、也可以是用組合語言寫成的。

apcs 對我們通常稱為 r0 到 r14 的暫存器起了不同的名字。使用彙編器預處理器的功能,你可以定義 r0 等名字,但在你修改其他人寫的**的時候,最好還是學習使用 apcs 名字。 

暫存器名字 

reg #  apcs   意義 

r0 a1 工作暫存器 

r1 a2 " 

r2 a3 " 

r3 a4 " 

r4 v1 必須保護 

r5 v2 " 

r6 v3 " 

r7 v4 " 

r8 v5 " 

r9 v6 " 

r10 sl 棧限制 

r11 fp 楨指標 

r12 ip   

r13 sp 棧指標 

r14 lr 連線暫存器 

r15 pc 程式計數器 

譯註:ip 是指令指標的簡寫。 

arm暫存器別名

apcs,arm 過程呼叫標準 arm procedure call standard 提供了緊湊的編寫例程的一種機制,定義的例程可以與其他例程交織在一起。最顯著的一點是對這些例程來自 沒有明確的限制。它們可以編譯自 c pascal 也可以是用組合語言寫成的。apcs 對我們通常稱為 r0 到 r...

ARM暫存器整理

arm有37個暫存器,31個通用暫存器 r0 r15 32位 和6個狀態暫存器 1.通用暫存器 使用者模式 系統模式 特權模式 中止模式 未定義指令模式 外部中斷模式 快速中斷模式。可分為 未備份暫存器r0 r7 備份暫存器 r8 r14 程式計數器 pc r15 注 r0 r7在所有模式下指的同一...

ARM暫存器介紹

arm微處理器支援7種執行模式,分別為 1.使用者模式 usr arm處理器正常的程式執行狀態 2.快速中斷模式 fiq 用於高速資料傳輸或通道管理 3.外部中斷模式 irq 用於通用的中斷處理 4.管理模式 svc 作業系統使用的保護模式 5.資料訪問終止模式 abt 當資料或指令預取終止時進入該...