ARM异常向量表的学习

什么叫异常

Exceptions are generated by internal and external sources to cause the processor to handle an event,

意思就是因为一些内部的或者外部的原因,导致处理器去处理这个原因所触发的事件

什么叫异常向量

The ARM architecture supports seven types of exception. When an exception occurs, execution is forced from a fixed 
memory address corresponding to the type of exception. These fixed addresses are called the exception 
vectors. 

意思就是,ARM共支持七种类型的异常。当一个异常发生时,ARM会跳转到对应的异常的固定地址去执行异常的处理程序,这个固定的地址就叫做异常向量。

而由异常向量与其处理函数所对应的关系表就是异常向量表了

.text
.global _start
_start:
b reset
ldr pc _undifined_instruction
ldr pc _software_interrupt
ldr pc _prefetch_abotr
ldr pc _data_abort
ldr pc _not_used
ldr pc _irq
ldr pc _fiq

_undifined_instruction: .word undifined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abotr: .word prefetch_abotr
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq






undifined_instruction:
nop
software_interrupt:
nop
prefetch_abotr:
nop
data_abort:
nop
not_used:
nop
irq:
nop
fiq:
nop
reset:
nop



下面解析这段代码:

b reset
ldr pc _undifined_instruction
ldr pc _software_interrupt
ldr pc _prefetch_abotr
ldr pc _data_abort
ldr pc _not_used
ldr pc _irq
ldr pc _fiq

这段代码就是异常下向量表

按照表中所示,0x00000000处是reset的处理程序,所以跳转到reset处,也就是b reset

后面的是ldr指令,以ldr pc _undifined_instruction为例,也就是将_undifined_instruction处内存的值放入pc中,而_undifined_instruction中的值是undifined_instruction,也就是未定义指令异常处理程序所在的内存地址,这样就实现了程序的跳转。

后面以此类推,就完成了整个程序的异常向量表!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值