Exception handling MIPS异常和中断是如何工作的?

Exception handling MIPS异常和中断是如何工作的?,exception-handling,mips,cpu-architecture,interrupt-handling,mips32,Exception Handling,Mips,Cpu Architecture,Interrupt Handling,Mips32,我正在使用类似于MIPS32的CPU,我想知道MIPS32异常和中断处理是如何工作的。《MIPS32特权资源体系结构指南》没有提供太多信息。我想知道以下几点: 如果异常或中断处理程序中存在异常或中断,会发生什么情况 MIPS32在原因寄存器中有5个硬件中断和2个软件中断。是软件中断异常,还是仅在异常代码值中显示异常 是否存在不同的中断和异常向量 如果管道在清除自身异常之前发生了2个异常,会发生什么?例如,有一个溢出异常,然后是另一个异常和一个中断。会发生什么 任何有用的资源链接将不胜感激 异常处

我正在使用类似于MIPS32的CPU,我想知道MIPS32异常和中断处理是如何工作的。《MIPS32特权资源体系结构指南》没有提供太多信息。我想知道以下几点:

  • 如果异常或中断处理程序中存在异常或中断,会发生什么情况

  • MIPS32在原因寄存器中有5个硬件中断和2个软件中断。是软件中断异常,还是仅在异常代码值中显示异常

  • 是否存在不同的中断和异常向量

  • 如果管道在清除自身异常之前发生了2个异常,会发生什么?例如,有一个溢出异常,然后是另一个异常和一个中断。会发生什么

  • 任何有用的资源链接将不胜感激

  • 异常处理程序在保存EPC、SR等之前不应重新启用异常
  • 软件中断属于例外情况
  • 一些MIPS CPU是用不同的中断和异常向量构建的,但这并不是很有用
  • MIPS有精确的异常:即异常以指令顺序出现,只有管道中的第一个异常在体系结构上可见

  • 是MIPS异常和MIPS PRA的最佳和最可读的参考

    这是关于硬件架构的-不适合与编程相关的问答网站。请尊重它-谢谢!当然,我在这里找到了一些与计算机体系结构相关的项目,所以我认为可以在Stackoverflow上发布,因为没有专门用于计算机体系结构的堆栈交换站点。这在某种程度上与编程有关,所以我认为这很好。这是关于硬件和软件如何交互的,所以对于stackoverflow来说很好。如果在管道中只有第一个异常(第一个作为精确的异常第一个)是可见的,那么原因寄存器中不应该只有一个软件中断位吗。还要感谢书中的建议由管道中的指令触发的异常(如溢出)在原因寄存器中设置ExCode字段,而不设置cause.IPx位。软件中断位(cause.IP0和IP1)是通过写入原因寄存器来设置的,它们与管道异常完全无关。然后,异常处理程序必须通过对ExCode字段进行测试来识别存在异常。最后一件事,中断优先于异常吗?是的,中断优先于异常。参见MIPS PRA规范中的第6.2.1节。嘿,我想知道另一件事,我读了这本书,我想知道IPL是如何实现的。IPL只是5个硬件中断位吗?CPU是否具有确定是否启用更高中断位的硬件?当有一个未经处理的低优先级中断未嵌套时,如果从中断返回,会发生什么情况?