ARM异常向量表详解

ARM指令是三级流水线

就是说取指,译指,执行时同时执行的

这样说吧,现在PC指向的是正在取指的地址,那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,一个指令占4个字节),cpu正在执行的指令地址是PC-8.

比如有一个向量表定义如下:

unsigned int const vecTbl[16] @".arm_vectors" =

{

0xE59FF018,

0xE59FF018,

0xE59FF018,

0xE59FF018,

0xE59FF018,

0xE59FF018,

0xE59FF018, // LDR PC,[PC,0x18] 若产生IRQ,CPU取指此处PC,正在执行指令为PC-8;

// 实际取指PC应该是 PC+8+0x18 = PC+0x20 ==>OS_CPU_ARM_ExceptIrqHndlr,也就是下一执行的PC

0xE59FF018,

(unsigned int) Entry,

(unsigned int) OS_CPU_ARM_ExceptUndefInstrHndlr, //未定义

(unsigned int) OS_CPU_ARM_ExceptSwiHndlr, //软中断

(unsigned int) OS_CPU_ARM_ExceptPrefetchAbortHndlr, //预取址

(unsigned int) OS_CPU_ARM_ExceptDataAbortHndlr, //数据

(unsigned int) Entry,

(unsigned int) OS_CPU_ARM_ExceptIrqHndlr, //IRQ

(unsigned int) OS_CPU_ARM_ExceptFiqHndlr //FIQ

};

CPSR
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清梦云河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值