简单解释异常?

时间:2013-05-30 04:35:25

标签: assembly

我明天参加考试,其中一个科目是大会上的例外。我有一个列表但我无法找到一个简单的解释,说明异常是什么以及何时发生。

例外情况是:

  1. 区域违规
  2. 除以0(这一点很明显)
  3. 无效指示
  4. 地址无效
  5. 缺点
  6. 任何信息都会有很大帮助,我只需要了解每个信息。

4 个答案:

答案 0 :(得分:3)

严格地说,您所指的例外不是汇编语言,而是CPU的操作行为。

从概念上讲,CPU具有一组状态寄存器,消耗指令流,并根据这些指令操作状态。现在,此流包含操作状态的指令(例如,添加1以注册EAX)和更改未来指令流的指令(例如,JMP topOfLoop)。

异常就像是隐式采取的跳转。例如,如果当前指令是DIV并且除数为零,则CPU可以中止指令而是跳转到不同的指令流,这称为异常处理程序。这很有用,因为异常处理程序可以从错误状态中恢复。此外,每条指令都可能触发许多不同类型的异常(内存错误,保护错误,操作数错误,模式错误,对齐错误等),并且显式写入指令来检查是很麻烦的。 所有这些条件。

答案 1 :(得分:3)

通常,代码按指令流动。因此,当您阅读该程序时,您可以看到每个指令一个接一个地跟随的位置。 CPU遵循此列表。现在,正如名称所示,异常会中断此执行流程。你已经举了一些例子。只要发生了正常的指令流不能继续并且必须处理的事情,就会发生执行。 因此,异常基本上是一种通知操作系统或程序员发现某些事情的方法。这可能是代码中的错误,也可能是故意的。

例如,除以零通常是一个错误。访问无效指针也可能是一个错误,但它也可能是操作系统从磁盘交换内存页面的触发器。程序停止运行,操作系统确保页面被加载,然后重置代码以继续,就像没有发生任何不良事件一样。

异常与中断非常相似,因为它们会破坏程序的常规流程并且必须得到服务,而且通常你不知道它们何时会发生。

答案 2 :(得分:0)

您一般也可以查找interrupts。列表中的这些异常只是软件中断的示例。

答案 3 :(得分:0)

当处理器无法正常继续执行程序时,基本上运行程序的能力有例外。因此理想情况下,它会转到异常处理程序,其他代码与中断处理程序非常相似,用于处理异常。像中断处理程序一样,有人必须编写该代码以及编写应用程序的人。除以零是明显的,无效指令也是如此,当找到的位模式与处理器支持的指令(机器代码)不匹配时,处理器无法继续。内存故障,当内存系统由于某种原因无法读取或写入内存位置时(例如ECC多位错误或无效地址)。

并非所有处理器都有例外,有些只是有一个中断,而且是“正常执行程序的异常”......