ARM的7種工作模式和37個寄存器
ARM的7種工作模式
包括用戶模式和特權模式二大類,其中特權模式又分為系統模式和異常模式。CPU每次只能運行在一種工作模式下,各種模式之間的切換可以是程序員通過代碼主動切換(通過程序狀態寄存器CPSR)也可以時CPU自己在某種情況下自動切換。由於操作系統有安全級別的需要,因此CPU設計多種模式是為了操作系統的多種角色安全等級的需要。
用戶模式(usr): 非特權模式,大部分任務的執行都在這種模式。
快速中斷模式(fiq):Fast Interrupt Request,當高優先順序中斷產生時會進入。
外部中斷模式(irq):當普通中斷髮生時會進入。
超級用戶模式(svc):當複位或軟中斷(使用軟體認為製造的中斷)時進入。
數據訪問中止模式(abt):當CPU讀寫內存失敗便會進入。
未定義指令終止模式(und):CPU執行未定義指令失敗會進入。
系統模式(sys):運行特權操作系統任務。
注意:FIQ在中斷向量表中的地址為0x1C,即在該地址後沒有任何中斷向量表了,因此放FIQ的中斷處理程序可以完全放在這裡;而IRQ的為0x18。(也有的在FFFF001C以及FFFF0018),因此只能放一條跳轉指令,當該中斷髮生時還要從此處跳到真正的IRQ處理程序的地方執行,這也是導致IRQ比FIQ慢的原因之一。
1
32位的RAM共有37個寄存器
其中30個是通用型的,1個為程序控制寄存器PC,1個為程序狀態寄存器CPSR,5個固定用在異常模式下的SPSR。在每種模式下最多只能看到18個寄存器,其他的寄存器雖然名字相同但是在當前模式下都不可見。
CPSR的各個位都表明了CPU的某些狀態信息,比如I、F位和中斷、關中斷有關,比如bit0 - bit3決定了CPU的工作模式等。
PC指向哪裡,CPU就會執行那條指令,程序跳轉時就是把目標地址放在PC中。
打開今日頭條,查看更多精彩圖片
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※六種可定量分析的代碼味道
※求助:threejs+qml+json模型載入失敗
TAG:程序員小新人學習 |