根據「arm-thumb 過程呼叫標準」:
1, r0-r3 用作傳入函式引數,傳出函式返回值。在子程式呼叫之間,可以將 r0-r3 用於任何用途。被呼叫函式在返回之前不必恢復 r0-r3。---如果呼叫函式需要再次使用 r0-r3 的內容,則它必須保留這些內容。
2, r4-r11 被用來存放函式的區域性變數。如果被呼叫函式使用了這些暫存器,它在返回之前必須恢復這些暫存器的值。
3, r12 是內部呼叫暫時暫存器 ip。它在過程鏈結膠合**(例如,互動操作膠合**)中用於此角色。在過程呼叫之間,可以將它用於任何用途。被呼叫函式在返回之前不必恢復 r12。
4,暫存器 r13 是棧指標 sp。它不能用於任何其它用途。sp 中存放的值在退出被呼叫函式時必須與進入時的值相同。
5,暫存器 r14 是鏈結暫存器 lr。如果您儲存了返回位址,則可以在呼叫之間將 r14 用於其它用途,程式返回時要恢復
6,暫存器 r15 是程式計數器 pc。它不能用於任何其它用途。
7,在中斷程式中,所有的暫存器都必須保護,編譯器會自動保護r4~r11,所以一般你自己只要在程式的開頭
sub lr,lr,#4
stmfd sp!,;保護r0~r3,r12,lr就可以了,除非你用彙編人為的去改變r4~r11的值。(具體去看ucos os_cpu_a.s中的irq中斷的**)
詳解ARM9的CPSR暫存器
最近在學習嵌入式底層系統開發,在寫啟動 時要設定各個模式的sp,需要調整cpu的工作模式,部分 如下 equ disable irq,0x80 equ disable fiq,0x40 equ sys mod,0x1f equ irq mod,0x12 equ fiq mod,0x11 equ sv...
基於ARM9程式狀態暫存器CPSR
定義 程式狀態暫存器 功能 反映資料運算狀態,控制系統模式等 特點 程式狀態暫存器不屬於通用暫存器 關於cpsr的訪問,arm專門為其設立了兩條指令 mrs cpsr到通用暫存器傳遞資料指令 msr 通用暫存器到cprs傳遞資料指令 1 msr 通用暫存器 cpsr 格式 msr 條件 cpsr s...
arm9的操作模式,暫存器,定址方式
a rm有7種工作模式 名稱 簡稱簡介 userusr 正常使用者程式執行的模式 linux 下使用者程式就是在這一模式執行的。fiqf iq快速中斷模式 irqi rq普通中斷模式 supervisorsvc 給作業系統準備的保護模式,許可權很高的一種模式,linux 的核心就是執行在此模式 ab...