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(转为机器码用的字节数)

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

CPSR:当前程序状态寄存器

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

它们的格式:

 

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

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

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

2.SPSR_异常 = CPSR

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

4.跳到向量表

 

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

2.CPSR  = SPSR_异常

3.清中断

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值