在ARM中什么是异常?

4

你好!

我目前正在学习AArch64异常处理

在文档开头写道:

严格来说,中断是打断软件执行流的东西。然而,在ARM术语中,这实际上是一个异常。

这意味着对于ARM来说,中断是一种异常,对吗?

我不太擅长英语,所以阅读文件时遇到了很多麻烦。

谢谢。


是的,把中断看作一种异常即可。 - Paul R
@PaulR 谢谢。 如果是这样,ARM中的中断是否实现为异常?还是他们只是试图将中断视为一种异常? - 김어진
我不是ARM方面的专家,但我预计异常处理机制对中断和其他类型的异常都是通用的。 - Paul R
@PaulR 谢谢! - 김어진
1个回答

4
ARM和许多其他架构将中断视为异常的子集,因为正如您所引用的那样,所有异常都能够中断软件执行的流程(不仅仅是中断)。总结一下,所有中断都是异常,但并非所有异常都是中断,因为某些异常可以通过向量表由异常处理程序进行管理:
- 复位,最高优先级异常 - 未定义指令 - 中断(由中断处理程序管理):FIQ、IRQ(FIQ的优先级高于IRQ)或SWI - 终止,数据或预取 - ...
因此,未对齐的数据访问(数据异常)和计时器(IRQ)将触发异常处理程序(并停止“指令的预期执行”),但数据异常不是中断,而是异常。

这意味着中断被视为异常的一个子集,不仅在ARM架构中如此,通常也是如此。 - 김어진
Edited for clarity - Jose
3
这被称为“统一异常模型”。其设计目的是通过使用相同的处理程序模型来处理中断和“传统”异常(异常CPU状态),简化配置和处理过程。在我看来,这个设计很成功。 - cooperised
很好的评论,我不知道这个定义。 - Jose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接