arm 汇编指令 CPS

注:内容来源 《ARM Cortex-A(armV7)编程手册V4.0》,只用于学习记录。

最近在看韦东山 imx6ull 裸机的汇编启动文件,看到一条比较陌生的汇编指令CPS(如下图所示),于是把它记录下来。
在这里插入图片描述
通过在《ARM Cortex-A(armV7)编程手册V4.0》中搜索 “CPS”,在 5.6.3 PSR modification 章节可以找到这样一句话,如下图高亮文字:
在这里插入图片描述
意思就是: 在特权模式下(除了用户模式,剩余的模式都是特权模式),可以通过CPS指令直接修改CPSR寄存器的M[4:0],让处理器进入不同的模式。

CPSR 的寄存器结构相同,如下图所示:
在这里插入图片描述

其中M[4:0] 就是处理器的模式控制为,不同的编码对应着不同的处理器模式,如下图所示:
在这里插入图片描述
所以:

CPS #0x12   /*把CPSR寄存器的M[4:0]修改为0x12,让处理器进入IRQ 模式*/
CPS #0x13   /*把CPSR寄存器的M[4:0]修改为0x13,让处理器进入SVC 模式*/

注:当然,我们也可以使用MRS、MSR指令通过 读、修改、写回 的方式,修改CPSR寄存器的M[4:0],让CPU进入不同的模式。只是,我觉得使用CPS指令更快速高效,只需一条指令即可。

  • 24
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Louis@L.M.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值