自己整理的ARM學習總結以及記錄,搜集了一些關于ARM CPU啟動方面的關鍵知識點,希望對大家有用。
一、CPSR概述
ARM處理器共有37個寄存器。這37個寄存器按其在用戶編程中的功能劃分,可分為2類寄存器,即31個通用寄存器和6個狀態寄存器。這6個狀態寄存器在ARM公司文件中其名稱分別為:CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fig。這12的作用分別如圖1所示:
所有處理器模式下都可訪問當前程序狀態寄存器CPSR。CPSR中包含條件碼標志、中斷禁止位、當前處理器模式以及其他狀態和控制信息。在每種異常模式下都有一個對用的程序狀態寄存器SPSR。當異常出現時,SPSR用于保存CPSR的狀態,以便異常返回后恢復異常發生時的工作狀態。
(1)條件碼標志
N、Z、C、V,最高4位稱為條件碼標志。ARM的大多數指令可以條件執行的,即通過檢測這些條件碼標志來決定程序指令如何執行。
各個條件碼的含義如下:
N:在結果是有符號的二進制補碼情況下,如果結果為負數,則N=1;如果結果為非負數,則N=0。
Z:如果結果為0,則Z=1;如果結果為非零,則Z=0。
C:其設置分一下幾種情況:
對于加法指令(包含比較指令CMN),如果產生進位,則C=1;否則C=0。
對于減法指令(包括比較指令CMP),如果產生借位,則C=0;否則C=1。
對于有移位操作的非法指令,C為移位操作中最后移出位的值。
對于其他指令,C通常不變。
V:對于加減法指令,在操作數和結果是有符號的整數時,如果發生溢出,則V=1;如果無溢出發生,則V=0;對于其他指令,V通常不發生變化。
(2)控制位的作用在圖1中可以看出,在這里就不闡述了。
二:CPSR與CPSR_c的區別
CPSR有4個8位區域:標志域(F)、狀態域(S)、擴展域(X)、控制域(C)
完整的Word格式文檔51黑下載地址(共34頁):
arm學習記錄.docx
(318.24 KB, 下載次數: 25)
2019-2-26 16:37 上傳
點擊文件名下載附件
|