CPU模式与状态

CPU一共有7种模式

  1. usr:用户模式
  2. sys:系统模式
  3. und:未定义指令模式
  4. svc:管理模式
  5. abt:终止模式(可以分为指令预取终止和数据访问终止)
  6. IRQ:中断模式
  7. FIQ:快中断模式(可以快速处理)

     2-6为特权模式:可以编程操作某个寄存器CPSR直接进入其他模式,用户模式下不可直接进入其他模式(给应用程序用的)。

     3-7为异常模式。

CPU state

  1. ARM state:用的是ARM指令集,每个指令4byte
  2. Thumb State:用的是Thumb指令集,每个指令2byte

比如:mov R0,R1  ARM:4Byte  Thumb:2Byte(转为机器码用的字节数)

CPU模式与状态CPU模式与状态CPU模式与状态

除用户模式,每种模式都有自己的专属寄存器(带黑色下三角图标),r13:sp(堆栈指针) r14:lr(保存返回的地址)。他们和用户模式下的r13,r14是不同的寄存器。

CPSR:当前程序状态寄存器

SPSR:保存的程序状态寄存器,用来保存被中断模式的CPSR

它们的格式:

 

CPU模式与状态

cmp r0,r1:影响Z位  相等Zero位为1, beq xxx  如果Zero位为1的话就会跳转。

CPU模式与状态

异常处理流程(硬件实现):

CPU模式与状态

1.LR_异常 = 下一条指令的地址

2.SPSR_异常 = CPSR

3.修改CPSR的M4-M0进入异常模式

4.跳到向量表

 

CPU模式与状态

1.PC = LR_异常减去offset(参考Table  2-2)

2.CPSR  = SPSR_异常

3.清中断

CPU模式与状态

 

上一篇:axios安装及使用


下一篇:题解 [HDU5669]Road