cpsr 指令
ARM指令集提供了两个指令直接控制程序状态寄存器( psr ),在非USER模式下控制程序状态寄存器
- MRS:把cpsr/spsr的值传送到一个通用寄存器中
- MSR:把一个立即数 或 一个寄存器的值 传送到cpsr/spsr;参数fileds是c(控制),x(扩展), s(状态), f(标志)的任意组合);
-
语法:
- 寄存器( psr ) 字节区域:
c : 控制中断任务,Thumb状态,程序模式
- 示例:
下面展示的例子是怎么样通过清除 任务 I 使得IRQ 中断的, 这个操作设计了MRS 和 MSR两个指令来从cpsr读取和写入数据的。
MSR 首先把 cpsr数据复制到 寄存器r1中;
BIC 将 r1的7位清除;
r1这时复制回 cpsr, 使 IRQ 中断。
紧紧更改了 I 位。
这个例子是在 SVC模式下,在用户模式下可以读取 cpsr 所有位,但是只能更改标志位。
协处理器指令
概念:
协处理器指令Coprocessor Instructions(only for带CP的ARM核),
包括数据处理、寄存器传输及内存传输指令;
可提供附加计算能力,又可用于控制包括 cache和内存管理 存储子系统;
用于扩展指令集,和具体的协处理器有关;-
语法:
协处理器15指令
概念:CP15被称为系统控制协处理器,可以配置处理器core,并有一组专门的寄存器来保存配置信息。
-
语法:
<MRC|MCR>{<cond>} cp, opcode1, Rd, Cn, Cm{, opcode2} ;
CP寄存器传输--把数据送人/取出CP的寄存器说明,Cn主寄存器, Cm辅寄存器, opcode2辅寄存器修饰符;
例子,
;把CP15寄存器c0的内容拷贝到r10
MRC p15,0,r10,c0,c0,0