中止向量表的程序设计如下:
CODE32
AREA Startup,CODE,READONLY
; /* 反常向量表 */
Vectors
LDR PC,ResetAddr;把ResetAdde地址上的存储器的内容装载到PC上
LDR PC, UndefinedAddr
LDR PC, SWI_Addr
LDR PC, PrefetchAddr
LDR PC, DataAbortAddr
DCD 0
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
ResetAddr DCD ResetInit;为ResetAddr分配以ResetInit地址值,
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterrupt
PrefetchAddr DCD PrefetchAbort
DataAbortAddr DCD DataAbort
Nouse DCD 0
IRQ_Addr DCD IRQ_Exception
FIQ_Addr DCD FIQ_Handler
此刻ResetAddr实质上只作为一个指针(指向ResetInit),没有分配空间,
ResetAddr地址的存储器上装载的是ResetInit的地址。
ResetInit
BL InitStack ; 初始化仓库
BL TargetBusInit ; 总线体系初始化 (函数中不允许仓库操作)
BLTargetResetInit; 针对方针板的体系初始化
以ResetInit为例,存储器空间分配如下所示:

留意中止向量表要存放在代码段startup的开端处(Entry开端),而程序被链接时,该startup代码段被链接在整个程序的进口地址。
=========================
1. undef exception handler
当时指令,假如CPU不支持,它会主动将该指令交给Co-processor.(如:MMU, FPU)处理。
假如Co-processor也无法辨认这条指令,则发生反常.
当履行SWI指令时,发生这种中止.
3. Data abort
由数据反常触发.
一般有3种指令引发数据反常, 这些指令都是访存操作.(都是由MMU引进后才可能会发生的状况)
LDR / STR
SWAP
LDM / STM
MMU的失效类型,又分为5种:
存储拜访失效
地址对齐失效
地址改换失效
域操控器失效
拜访操控权限失效
因而当反常发生后,需求经过拜访CP15来获悉反常发生的详细原因和状况。
4. Pretetch Abort
关于ARM处理器来说,因为其内部使用了哈佛结构—独立的数据的指令总线.
因而,在数据/指令的读取过程中发生的反常也就很自然地能够区别开来
本质上而言,这些反常都是同归于存储拜访失利发生的反常,因而这些反常都由MMU相关,在ARM手册中DataAbort和PrefetchAbort都
称为Memory abort。
Prefetch也就是在预取指令的动作后发生的,当处理器运转到这个无效的指令时(这个无效与undefined exception中的不行辨认不同,
是指不存在或是无法得到)就触发该反常。