ARM7寄存器分布图
??????? 在匯編語言中寄存器R0~R13為保存數據或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結構作為特殊用途,并且可用于任何使用通用寄存器的指令。其中R0~R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應于相同的32位物理寄存器。寄存器R8~R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器。寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發生FIQ中斷后,可以加速FIQ的處理速度。
??????? 寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統模式,其余5個分別用于5種異常模式。
??????? 寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。
??????? R14為鏈接寄存器(LR),在結構上有兩個特殊功能:
??????? 1,在每種模式下,模式自身的R14版本用于保存子程序返回地址;
??????? 2,當發生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。
??????? R14寄存器注意要點:
??????? 當發生異常嵌套時,這些異常之間可能會發生沖突。例如:如果用戶在用戶模式下執行程序時發生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。
??????? 解決辦法是確保R14的對應版本在發生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。
??????? 寄存器R15為程序計數器(PC),它指向正在取指的地址。可以認為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。
??????? 寄存器CPSR為程序狀態寄存器,在異常模式中,另外一個寄存器“程序狀態保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在因為異常事件而進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。(完)
總結
以上是生活随笔為你收集整理的ARM7寄存器分布图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比尔·盖茨盛赞ChatGPT:称其“不亚
- 下一篇: uC/OS-II源码分析(总体思路一)(