ARM SOC体系结构阅读笔记 二

ARM指令集

1 数据类型

ARM支持6种数据类型,指令全是32位的字,且必须时字对准的。

8位有符号和无符号字节;

16位有符号和无符号字,以2字节的边界对准;

32位有符号和无符号字,以4字节的边界对准;

2 异常

1)异常分类

指令执行引起的直接异常,包括软件中的,未定义指令和预取指令中止等

指令执行引起的间接异常,包括数据中止(ld/st异常)等

外部产生的与指令流无关的异常,包括复位,irq,fiq等

2)异常处理

-进入与特定的异常相应的操作模式

-将引起异常指令的下一条指令的地址保存到新模式的r14中

-将CPSR的原值保存到新模式的SPSR中

-通过设置CPSR的第7位禁止IRQ,如果异常为FIQ,设置第6位禁止

-给PC强制赋值,使程序从相应的向量地址开始执行;

CPSR current program status register 当前程序状态寄存器

 

  SPSR saved program status register 程序状态保存寄存器,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。

3)异常返回

-所有修改过的用户寄存器必须从处理程序的堆栈中恢复;

-CPSR必须从相应的SPSR中恢复;

-PC必须便会到在用户指令流中相应的指令地址;

第23步需要在一条指令中同时完成;

区分返回地址保存至r14和返回地址保持在堆栈两种场景

4)异常优先级

从高到低依次

-复位,最高优先级

-数据异常中止

-FIQ

-IRQ

-预取指令异常中止

-SWI/未定义指令

3 条件执行

 

 

4 软件中断swi指令

-将SWI后面指令的地址保存到r14_svc

-将CPSR保存到SPSR_svc

-进入监控模式,将CPSR[4:0]设置位10011,将CPSR[7]设置位1,禁止IRQ

-将PC设置位0x08,并开始执行;

为了返回SWI后的指令,系统的程序必须将r14_svc拷贝到PC,并由SPSR_svc

恢复CPSR。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值