ARM指令集
1 数据类型
ARM支持6种数据类型,指令全是32位的字,且必须时字对准的。
8位有符号和无符号字节;
16位有符号和无符号字,以2字节的边界对准;
32位有符号和无符号字,以4字节的边界对准;
2 异常
1)异常分类
指令执行引起的直接异常,包括软件中的,未定义指令和预取指令中止等
指令执行引起的间接异常,包括数据中止(ld/st异常)等
外部产生的与指令流无关的异常,包括复位,irq,fiq等
2)异常处理
-进入与特定的异常相应的操作模式
-将引起异常指令的下一条指令的地址保存到新模式的r14中
-将CPSR的原值保存到新模式的SPSR中
-通过设置CPSR的第7位禁止IRQ,如果异常为FIQ,设置第6位禁止
-给PC强制赋值,使程序从相应的向量地址开始执行;

CPSR current program status register 当前程序状态寄存器





SPSR saved program status register 程序状态保存寄存器,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
3)异常返回
-所有修改过的用户寄存器必须从处理程序的堆栈中恢复;
-CPSR必须从相应的SPSR中恢复;
-PC必须便会到在用户指令流中相应的指令地址;
第23步需要在一条指令中同时完成;
区分返回地址保存至r14和返回地址保持在堆栈两种场景
4)异常优先级
从高到低依次
-复位,最高优先级
-数据异常中止
-FIQ
-IRQ
-预取指令异常中止
-SWI/未定义指令
3 条件执行


4 软件中断swi指令

-将SWI后面指令的地址保存到r14_svc
-将CPSR保存到SPSR_svc
-进入监控模式,将CPSR[4:0]设置位10011,将CPSR[7]设置位1,禁止IRQ
-将PC设置位0x08,并开始执行;
为了返回SWI后的指令,系统的程序必须将r14_svc拷贝到PC,并由SPSR_svc
恢复CPSR。
本文详细介绍了ARM指令集中的数据类型、异常处理机制,包括异常分类、处理过程及返回方式,强调了异常的优先级。此外,还讨论了软件中断SWI指令的执行流程及其返回过程,为理解ARM处理器的异常管理和软件中断提供了清晰的指导。
1693

被折叠的 条评论
为什么被折叠?



