优秀的编程知识分享平台

网站首页 > 技术文章 正文

arm 汇编指令 CPS(arm汇编器)

nanyue 2024-11-10 10:18:05 技术文章 2 ℃

最近在看韦东山 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指令更快速高效,只需一条指令即可。

注:内容来源 《ARM Cortex-A(armV7)编程手册V4.0》

Tags:

最近发表
标签列表