从事嵌入式arm开发,还是有必要了解下arm的寄存器。虽然现在不要求会写汇编,但是作为一个资深工程师,我们还是需要有读懂汇编代码的能力。
分析内核代码,也少不了与汇编打交道,而汇编语言和平台架构紧密结合,基本都是在操作寄存器。我们今天来学习下arm寄存器。
1.arm寄存器
ARM 处理器一般共有 37 个寄存器,其中包括:
(1) 31 个通用寄存器,包括 PC(程序计数器)在内,都是 32 位的寄存器。
(2) 6 个状态寄存器,都是 32 位的寄存器。这6个包括1个CPSR,5个不同处理器模式下的SPSR。
需要知道ARM处理器共有7种不同的处理器模式:
用户模式(User),
快速中断模式(FIQ),
普通中断模式(IRQ),
管理模式(Svc),
数据访问中止模式(Abort),
未定义指令中止模式(Und),
系统模式(Sys),
用户进程通常运行于用户模式,通过中断、系统调用、异常进入其他模式。系统模式可以理解为进入内核态。中断模式很容易理解,未定义指令中止模式我举个例子。内核代码有时候怕程内存越界,会在边界处赋值一条不存在的指令值,比如0xdead之类,执行到此处便会陷入未定义指令异常模式。数据访问中止模式最常见的就是访问了不该访问的内存空间,或者是内核时刻在发生的缺页异常。
有点见识的同学可能知道arm