ARM—工作狀態,工作模式

ARM 418瀏覽
ARM32位
ARM指令集
Thumb指令集(一個不完整的)
區別:Thumb指令集是ARM指令集的空間壓縮的子集,Thumb指令集不能替代ARM指令集
由于Thumb指令的長度為16位,即只用ARM指令一半的位數來實現同樣的功能,所以,要實現特定的程序功能,所需的Thumb指令的條數較ARM指令多。
在一般的情況下,Thumb指令與ARM指令的時間效率和空間效率關系為:
— Thumb代碼所需的存儲空間約為ARM代碼的60%~70%
— Thumb代碼使用的指令數比ARM代碼多約30%~40%
— 若使用32位的存儲器,ARM代碼比Thumb代碼快約40%(當使用32位的機器時,thumb指令集就沒有什么太大優勢了,除了功耗)
— 若使用16位的存儲器,Thumb代碼比ARM代碼快約40%~50%
— 與ARM代碼相比較,使用Thumb代碼,存儲器的功耗會降低約30%
顯然,ARM指令集和Thumb指令集各有其優點,若對系統的性能有較高要求,應使用32位的存儲系統和ARM指令集,若對系統的成本及功耗有較高要求,則應使用16位的存儲系統和Thumb指令集。當然,若兩者結合使用,充分發揮其各自的優點,會取得更好的效果。
Jazelle指令集:為Java字節碼提供硬件加速的功能,提高了Java代碼的執行效率。
處理器工作模式:(8種)
用戶模式:User
特權模式:FIQ(快速中斷)
IRQ(外部中斷)
Supervisor(管理模式)
Abort(異常模式)
Undef(未定義指令終止模式)
System(系統模式)
Monitor(代碼監控)

ARM寄存器:

Cortex-A系列有40個寄存器
重點分析5個寄存器:r13,r14,r15
r13:---sp:指向棧頂元素的一個堆棧指針
r14:---lr:鏈接寄存器,保存下一條指令的地址
r15:---pc:程序計數器,pc指向當前正在執行的指令(記錄我們程序運行到什么位置)
cpsr(currented programs status register):當前程序狀態寄存器(公有)
spsr(saved programs status register):保存當前程序狀態寄存器(私有)
重點:異常處理流程
ARM狀態:3種狀態
ARM工作狀態是由cpsr的兩位進行控制(T位和J位)
ARM
Thumb
Jazelle(J位控制,T=0,J=1)
T = 0; J = 0; 處理器處于 ARM 狀態
T = 1; J = 0; 處理器處于 Thumb 狀態
T = 1; J = 1; 處理器處于 ThumbEE 狀態
T = 0; J = 1; 處理器處于 Jazelle狀態

七星彩走势图2元网官网