2017-05-14 77 views
0

我最近一直在学习程序集,我似乎无法理解异常是如何工作的。更具体地说,我收到异常6发生并被忽略的消息。有人能解释一下这到底是什么意思?我正在使用qtspim。MIPS异常它们是什么意思

+0

经过几秒钟的谷歌搜索,看起来这是一个模拟器(spim)的东西来帮助你,我看到的少数几个东西是真正的硬件将/应该挂在上面。未对齐的访问,在该地址空间外获取指令等。基本上,您的代码中存在一个错误,请查找它。我不太了解spim,知道它是否告诉你发生了什么(发生了什么指令或地址等),是否有一个功能可以在故障点停止/挂起/崩溃而不是忽略并尝试继续? –

回答

0

异常可能是由硬件或软件造成的。异常就像跳转到新地址的非调度函数调用。 该程序可能会遇到一个错误条件,如 未定义的指令。程序然后跳转到操作系统(OS)中的代码,该操作系统可以选择终止程序。异常的其他原因除以零,尝试读取一些不存在的内存,硬件故障,调试器断点和算术溢出。

处理器记录发生异常时的异常原因和PC 的值。然后它跳转到异常处理函数。异常处理程序是检查异常原因并正确响应的代码(通常在OS中),然后返回到发生异常之前正在执行的程序 。

在MIPS中,异常处理程序始终位于0x80000180。发生异常时,无论原因如何,处理器都会跳转到该指令地址。

该MIPS架构使用一个专用寄存器,称为原因 注册,以记录异常的原因。

MIPS使用另一个专用寄存器称为异常 程序计数器EPC)至PC的值存储在 异常发生的时间。在 处理异常后,处理器返回到EPC中的地址。这类似于在jal指令中使用$ra来存储PC的旧 值。

相关问题