ARM 学习笔记01

一、ARM工作模式(7种)

User:非特权模式,大部分任务执行在这种模式
FIQ:当一个高优先级(fast)中断产生时将会进入这种模式
IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
Supervisor(SVC):当复位或软中断指令执行时将会进入这种模式
Abort:当存取异常时将会进入这种模式
Undef:当执行未定义指令时会进入这种模式
System:使用和User模式相同寄存器集的特权模式

可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式;除User模式外,其余6种工作模式都属于特权模式;特权模式中除了System模式以外的其余5种模式称为异常模式;大多数程序运行于用户模式;** 进入特权模式是为了处理中断、异常、或者访问被保护的系统资源

ARM体系的CPU有两种工作状态

ARM
THumb

二、寄存器

ARM有37个寄存器

每个寄存器都是32位(4字节)
1个用作PC(Program Counter)
1个用作CPSR(Current Program Status Register)
5个用作SPSR(Saved Program Status Registers)
30个通用寄存器

ARM寄存器框图

没有标三角的寄存器是在七种模式下公用的,标三角的是有额外的寄存器

R13(SP):栈指针寄存器,用于保存堆栈指针
R14(LR):程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15(PC)的备份,而当发生中断或异常时,R14保存R15的返回值
R15(PC):记录当前程序运行的位置
CPSR:当前程序状态寄存器
SPSR:保存之前CPSR状态的寄存器

CPSR寄存器

  1. Mode位:处理器模式位
序号 Mode位 处理器模式
1 10000 User mode
2 10010 IRQ
3 10111 Abort mode
4 11111 System mode
5 10001 FIQ mode
6 10011 SVC mode
7 11011 Undfined mode
  1. T位和J位
    T = 0;J=0 处理器处于 ARM 状态(一条指令4个字节)
    T = 1;J=0 处理器处于 Thumb 状态(一条指令2个字节)
  2. 中断禁止位:
    I = 1: 禁止 IRQ.
    F = 1: 禁止 FIQ
  3. 条件位:
    N = Negative result from ALU
    Z = Zero result from ALU
    C = ALU operation Carried out or borrow
    V = ALU operation oVerflowed
  4. CPSR / SPSR操作指令
    mrs r0,CPSR (写入)
    msr CPSR,r0 (读出)

三、练习测验

1. ARM有哪些工作模式?
2. ARM核有多少个寄存器?
3. PC和LR寄存器的别名?
4. R13别名是什么?
5. 哪种模式使用的寄存器最少?
6. 在 Thumb和ARM指令区别?
7. CPSR的哪位反映了处理器的状态?
End

本文标题:ARM 学习笔记01

本文链接:http://chisato.cn/index.php/archives/182/

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2022 年 07 月 23 日 10 : 51 PM
如果觉得我的文章对你有用,请随意赞赏