Arm异常处理机制

Arm异常处理机制,arm,Arm,正在学习arm异常处理的基础知识,并产生了以下疑问: (我以中止异常为例) 假设处理器正在用户模式下运行 当异常发生时,处理器会将当前的pc保存到中止模式LR和CPSR保存到中止模式SPSR,执行跳转到中止的向量地址,因此pc现在将包含中止的向量地址 所以我在这里得到的是在将流转移到中止模式之前(让pc中止向量)。 CPU将执行以下任务: 如上所述,“当前pc到中止模式LR和CPSR到中止模式SPSR,然后执行跳转到向量地址进行中止。”。 在哪种模式下以及从何处执行指令以执行上述任务?当发生中止

正在学习arm异常处理的基础知识,并产生了以下疑问: (我以中止异常为例) 假设处理器正在用户模式下运行

当异常发生时,处理器会将当前的
pc
保存到中止模式
LR
CPSR
保存到中止模式
SPSR
,执行跳转到中止的向量地址,因此
pc
现在将包含中止的向量地址

所以我在这里得到的是在将流转移到中止模式之前(让pc中止向量)。 CPU将执行以下任务: 如上所述,“当前
pc
到中止模式
LR
CPSR
到中止模式
SPSR
,然后执行跳转到向量地址进行中止。”。 在哪种模式下以及从何处执行指令以执行上述任务?

当发生中止异常时,您引用的文本是正确的。其他例外情况使用不同的模式

将PC复制到异常模式LR,将CPSR复制到SPSR,并将PC设置为异常向量,这是处理器在处理异常时自动为您执行的操作。不需要任何说明。它还会切换到该异常模式使用的SP


接下来就是异常处理程序。而且完全是软件的。

你到底有什么问题?@tangrs,请你看看现在能不能找到我。ARM内部的微码完成了所有这些。注意:ARM中的向量表是
code
,而不是指向
code
的指针。通常向量表中有某种分支或
ldr pc,=abort\u handler
。数据中止有一个小孔,有两条指令可用。FIQ已经到了终点,不需要跳跃。