ARM System Developer's Guide 学习笔记 3.5 程序状态寄存器指令

cpsr 指令

ARM指令集提供了两个指令直接控制程序状态寄存器( psr ),在非USER模式下控制程序状态寄存器

  • MRS:把cpsr/spsr的值传送到一个通用寄存器中
  • MSR:把一个立即数 或 一个寄存器的值 传送到cpsr/spsr;参数fileds是c(控制),x(扩展), s(状态), f(标志)的任意组合);
  • 语法:


    cpsr指令
  • 寄存器( psr ) 字节区域:
*psr* 字节区域

c : 控制中断任务,Thumb状态,程序模式

  • 示例:
    下面展示的例子是怎么样通过清除 任务 I 使得IRQ 中断的, 这个操作设计了MRS 和 MSR两个指令来从cpsr读取和写入数据的。

MSR 首先把 cpsr数据复制到 寄存器r1中;
BIC 将 r1的7位清除;
r1这时复制回 cpsr, 使 IRQ 中断。
紧紧更改了 I 位。

清除标志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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容