2008年8月7日 星期四

ARM Register

ARM的暫存器,全部共有31個32位元的暫存器。但ARM核心同時最多只可以有18個同時執行的暫存器:這包含了16個資料暫存器和2個處理器狀態暫存器,16個資料暫存器中包含了3個專用暫存器,R13、R14和R15。

  1. R0-R7:這8個暫存器是所有模式都共用的。

  2. R8-R12:則會依照模式去切換Bank Register。

  3. R13通常做為堆疊指標Stack Pointer,保存目前處理器模式的堆疊的堆疊頂端。(by convention)

  4. R14為Link Register,保存副程式的返回位址,比如在BL指令時,會將PC的值複製到R14,作為返回(Return)的位址。(hardwired)

  5. R15為PC(Program Counter),內容存放處理器要存取的下一道指令位址。(hardwired)
而關於此種依據不同的中斷作為區分微處器操模式的方式,是ARM公司在美國的一項專利(專利編號:5,701,493;專利名稱:Exception handling method and apparatus in data processing systems)。

    R13(Stack Pointer:SP):用途大約可分三大類
  1. 中斷產生時,不想改變目前模式下的暫存器,把所有暫存器資料儲存起來

  2. 當函式被呼叫時,一樣也不想改變呼叫者的暫存器,也會把所有暫存器資料儲存起來

  3. C語言的區域變數(Local Variable)會使用

    有一個Current Program Status Register (CPSR)
  1. 在所有處理器模式下都可以存取當前的程式狀態暫存器CPSR。

  2. CPSR包含條件碼旗標,中斷禁止位元,當前處理器模式以及其他狀態和控制資訊。
    有五個Saved Program Status Registers (SPSRs)
  1. 每種例外模式都有一個程式狀態保存暫存器SPSR。
  2. SPSR用於保留CPSR的狀態。
    條件碼旗標(Condition Code Flag):
    N,Z,C,V 大多數指令可以測試這些條件碼旗標以決定程式指令如何執行
    控制位元(Control Bit):
    最低8位元 I,F,T和M位元用做控制位元。當例外出現時改變控制位元。當處理器在特權模式下也可以由軟體改變。
    中斷禁止位元(Interrupt disable bit):I設成1則禁止IRQ中斷。F設成1則禁止FIQ中斷。
    T位元(State Bit或Thumb Bit):
    T=0 指示ARM執行。T=1指示Thumb執行。在這些架構系統中,可自由地使用能在ARM和Thumb狀態之間切換的指令。
    模式位元(Mode Bit):
    M0, M1, M2, M3和M4 (M[4:0]) 是模式位元.這些位元決定處理器的工作模式。

沒有留言:

一個小故事讓我們明白資金流通的意義

“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...