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

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>{} cp, opcode1, Rd, Cn, Cm{, opcode2} ;
    CP寄存器传输–把数据送人/取出CP的寄存器

    说明,Cn主寄存器, Cm辅寄存器, opcode2辅寄存器修饰符;

例子,
;把CP15寄存器c0的内容拷贝到r10
MRC p15,0,r10,c0,c0,0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kxwang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值