ARM處理器編程模型
RISC并非只是簡單地去減少指令,而是把著眼點放在了如何使計算機的結構更加簡單合理地提高運算速度上,優先選取使用頻最高的簡單指令。
本文引用地址:http://www.104case.com/article/201611/317965.htm二、ARM處理器共有37個寄存器,被分為若干個組(BANK),這些寄存器包括:
31個通用寄存器,包括程序計數器(PC指針),均為32位的寄存器。
6個狀態寄存器,用以標識CPU的工作狀態及程序的運行狀態,均為32位,目前只使用了其中的一部分。
三、ARM微處理器在較新RISC體系結構中支持兩種指令集:ARM指令集和Thumb指令集。
ARM指令為32位的長度,Thumb指令為16位長度
Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節省30%~40%以上的存儲空間,同時具備32位代碼的所有優點。
四、arm處理器的工作狀態
ARM微處理器的工作狀態一般有兩種,并可在兩種狀態之間切換:
1、ARM狀態,此時處理器執行32位的字對齊的ARM指令;
2、Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。
ARM指令集和Thumb指令集均有切換處理器狀態的指令,并可在兩種工作狀態之間切換,但ARM微處理器在開始執行代碼時,應該處于ARM狀態。
五、ARM體系結構的存儲器格式
1、(1)大端格式:在這種格式中,字數據的高字節存儲在低地址中
(2)小端格式:在這種格式中,字數據的低字節存儲在低地址中
2、存儲管理單元-MMU
其主要功能有:
(1)將主存地址從虛擬存儲空間映射到物理存儲空間。
(2)存儲器訪問權限控制。
(3)設置虛擬存儲空間的緩沖特性等。
六、處理器模式
ARM微處理器支持7種運行模式,分別為:
除用戶模式外,其它模式均為特權模式。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。
除用戶模式和系統模式外,其它模式均為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態不可靠。
用戶模式和系統模式這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。
系統模式是特權模式,不受用戶模式的限制。操作系統在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統的一些特權任務可以使用這個模式訪問一些受控的資源。
六、寄存器
ARM微處理器中的寄存器不能被同時訪問,具體哪些寄存器是可編程訪問的,取決微處理器的工作狀態及具體的運行模式。
但在任何時候,通用寄存器R14~R0、程序計數器PC、一個或兩個狀態寄存器都是可訪問的。
1、arm狀態下寄存器
通用寄存器包括R0~R15,可以分為三類:
未分組寄存器R0~R7:在所有的運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統用作特殊的用途
分組寄存器R8~R14;對于分組寄存器,他們每一次所訪問的物理寄存器與處理器當前的運行模式有關。
程序計數器PC(R15):寄存器R15用作程序計數器(PC)
2、Thumb狀態下的寄存器
程序員可以直接訪問的寄存器為:
8個通用寄存器R0~R7;
程序計數器(PC);
堆棧指針(SP);
鏈接寄存器(LR);
有條件訪問程序狀態寄存器( CPSR)。
3、ARM狀態和Thumb狀態之間寄存器的關系
Thumb狀態R0~R7與ARM狀態R0~R7相同;
Thumb狀態CPSR和SPSR與ARM狀態CPSR和SPSR相同;
Thumb狀態SP映射到ARM狀態R13;
Thumb狀態LR映射到ARM狀態R14;
Thumb狀態PC映射到ARM狀態PC(R15)。
七、異常
1、當正常的程序執行流程發生暫時的停止時,稱之為異常。類型如下:
2、當多個異常同時發生時,ARM9處理器將按照異常的優先級高低順序處理,異常優先級由高到低的排列次序如表所示。
評論