一、ARM七种处理器工作模式:
用户模式 usr:正常程序执行模式
快速中断模式FIQ:用于高速数据传输和通道处理
外部中断模式IRQ:用于通常的中断处理
管理模式svc:供操作系统使用的一种保护模式(SWI)
数据中止中断模式abt:用于虚拟存储及储存保护
未定义指令中止模式und:用于支持通过软件方针硬件的协处理器
系统模式sys:用于运行特级的操作系统任务
除了用户模式,其他六种为特权模式,而六种特权模式除了系统模式之外的都是异常模式。
二、寄存器
ARM结构具有31个通用寄存器和6个状态寄存器,都是32位的寄存器;
通用寄存器分为:备份寄存器、未备份寄存器和程序计数器PC
1、未备份寄存器:R0-R7
2、备份寄存器:
R8-R12在快速中断FIQ情况下会有备份,R13、R14通常作为栈基址指针SP和链接寄存器LR,在异常模式下都会有备份。
3、程序计数器:R15 PC指针
使用PC指针注意存在读写不对称的问题,由于AR流水作业,PC指针会指向当前执行指令后两个指针。如果是ARM指令PC指针是当前执行指令地址加两个字,Thumb指令为半字。
4、状态寄存器:
CPSR、SPSR在5种异常模式下各自有各自备份寄存器;状态寄存器包含处理器运行模式设置M0-M4,T指示指令模式Thumb或ARM程序;F/I可以选择是否屏蔽FIQ、IRQ中断;N负数、Z零、V符号位溢出、C运算进位及Q增强DSP指令溢出指示。
三、关于大小端的区别:
大端-高字节在小地址端;小端-高字节在大地址端。
四、异常中断及对应的处理器模式
1、复位reset/软复位 => svc模式 优先级1(越大越低)
2、未定义指令中止 => undef模式 6
3、软件中断SWI断点 => svc模式 6
4、指令预取中止5、数据访问中止2 => abt模式(BKPT)
5、外部中断 => IRQ 4
6、快速中断 => FIQ 3
小贴士:
正常程序运行在用户模式,系统内核使用到系统模式?
哪些资源可以设置不同模式下的权限?如内存读写访问的设置权限;
跳转及变量的定义都会影响效率:跳转会清除指令流水;变量定义小于寄存器长度时需要额外的处理?
一、ARM七种处理器工作模式:
用户模式 usr:正常程序执行模式
快速中断模式FIQ:用于高速数据传输和通道处理
外部中断模式IRQ:用于通常的中断处理
管理模式svc:供操作系统使用的一种保护模式(SWI)
数据中止中断模式abt:用于虚拟存储及储存保护
未定义指令中止模式und:用于支持通过软件方针硬件的协处理器
系统模式sys:用于运行特级的操作系统任务
除了用户模式,其他六种为特权模式,而六种特权模式除了系统模式之外的都是异常模式。
二、寄存器
ARM结构具有31个通用寄存器和6个状态寄存器,都是32位的寄存器;
通用寄存器分为:备份寄存器、未备份寄存器和程序计数器PC
1、未备份寄存器:R0-R7
2、备份寄存器:
R8-R12在快速中断FIQ情况下会有备份,R13、R14通常作为栈基址指针SP和链接寄存器LR,在异常模式下都会有备份。
3、程序计数器:R15 PC指针
使用PC指针注意存在读写不对称的问题,由于AR流水作业,PC指针会指向当前执行指令后两个指针。如果是ARM指令PC指针是当前执行指令地址加两个字,Thumb指令为半字。
4、状态寄存器:
CPSR、SPSR在5种异常模式下各自有各自备份寄存器;状态寄存器包含处理器运行模式设置M0-M4,T指示指令模式Thumb或ARM程序;F/I可以选择是否屏蔽FIQ、IRQ中断;N负数、Z零、V符号位溢出、C运算进位及Q增强DSP指令溢出指示。
三、关于大小端的区别:
大端-高字节在小地址端;小端-高字节在大地址端。
四、异常中断及对应的处理器模式
1、复位reset/软复位 => svc模式 优先级1(越大越低)
2、未定义指令中止 => undef模式 6
3、软件中断SWI断点 => svc模式 6
4、指令预取中止5、数据访问中止2 => abt模式(BKPT)
5、外部中断 => IRQ 4
6、快速中断 => FIQ 3
小贴士:
正常程序运行在用户模式,系统内核使用到系统模式?
哪些资源可以设置不同模式下的权限?如内存读写访问的设置权限;
跳转及变量的定义都会影响效率:跳转会清除指令流水;变量定义小于寄存器长度时需要额外的处理?
举报