ARM—工作状态,工作模式

ARM 214浏览
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状态